怎么会这样做呢?还有,有一个简单的方法吗?使用像Boost这样的lib或什么?
答案 0 :(得分: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;
答案 1 :(得分: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])
答案 2 :(得分:0)
思路: