怎么会这样做呢?另外,有没有简单的方法来做到这一点?使用像Boost或类似的东西?从C++中由java的writeInt方法编写的文件中读取int?
1
A
回答
4
写出int的DataOutputStream写出一个4字节的int,高字节在前。读入char *,重新解释,如果你需要使用ntohl转换字节顺序。
ifstream is;
is.open ("test.txt", ios::binary);
char* pBuffer = new char[4];
is.read (pBuffer, 4);
is.close();
int* pInt = reinterpret_cast<int*>(pBuffer);
int myInt = ntohl(*pInt); // This is only required if you are on a little endian box
delete [] pBuffer;
+0
一切都很好,直到你打到一个平台'sizeof(int)!= 4`。或者一个整数是补码或符号位,而不是二进制补码(全部由ISO C99允许)。 – 2009-07-23 03:50:47
0
思路:
- 读它作为标准二进制,然后转换/解释必要的字节。所以如果Java为int写出了4个字节,那么你可以读取4个字节。如果有任何endian-ness改变然后这样做,然后投掷(或复制)字节数组到一个c + + int如果你可以改变Java代码,你可以把它写出来,像C++可以读取一样UTF-8文本或ascii,或谷歌协议缓冲格式或其他。
2
唯一跨平台的方式来做到这一点是阅读逐字节(即char
通过char
),并建立了它们的整数。您希望使用long
,因为int
不保证足够宽以保存32位值。我假设你已经阅读了字节到这里char[4]
阵列(其他答案已经演示了如何做到这一点):
char bytes[4];
...
long n = (long(bytes[0]) << 24) | (long(bytes[1]) << 16) |
(long(bytes[2]) << 8) | long(bytes[3])
相关问题
- 1. 读取由八度编写的java中的HDF5文件
- 2. 从文件中读取int
- 3. 无法读取使用Java中的SXSSFWorkbook编写的文件
- 4. 由PHPExcel编写的行无法从其他库中读取
- 5. C编程:从文件中读取
- 6. 使用java编写和读取文本文件中的数字
- 7. 从C中的文件中读取它的外部写入
- 8. 在C++中读取和写入int到二进制文件
- 9. C:I/O - 从文件中读取int的最快/最佳方式
- 10. 如何读取用c写的java中的二进制文件#
- 11. 从C++中读取文件的最快速方法
- 12. 从Powershell写入文件,然后从C#中读取文件
- 13. 如何从文件中读取方法
- 14. Python - 从正在Windows中编写的文本文件读取
- 15. 阅读从C用Java编写的文件
- 16. 从C++中的文件中读取
- 17. 从C++中读取文件
- 18. 从文件中读取。 C++
- 19. 从Java中的文本文件中读取最快的方法是什么?
- 20. 从C#中的文本文件读取#
- 21. 从C中的文本文件读取
- 22. 如何从文本文件读取int数组,在c + +中?
- 23. 从Java中的字节获取int,首先在C#中编码
- 24. 从java中读取文件并保存数组中的txt中的int数字
- 25. 用Java读取文件的好方法
- 26. 从C++中的文本文件读取/写入结构
- 27. 从Java中的文件读取整数
- 28. 从java中的.txt文件读取
- 29. 从java中的RDF文件读取值
- 30. 编写读取二进制文件的方法
可能重复:http://stackoverflow.com/questions/1154991/load-二进制文件使用fstream – 2009-07-23 04:46:03