在 Windows 上的 C 程序中,我们需要像 Java 字节缓冲区一样读写,它将二进制文件存储在 BIG_ENDIAN 中
该算法描述于: http: //mindprod.com/jgloss/binaryformats.html
需要读写int和float。
有没有人有执行此操作的示例 c 或 C++ 代码或参考?
TIA,伯特
在 Windows 上的 C 程序中,我们需要像 Java 字节缓冲区一样读写,它将二进制文件存储在 BIG_ENDIAN 中
该算法描述于: http: //mindprod.com/jgloss/binaryformats.html
需要读写int和float。
有没有人有执行此操作的示例 c 或 C++ 代码或参考?
TIA,伯特
我认为困难在于在 Big Endian 和 Little Endian 之间进行转换。
本文应该可以帮助您进行 Endian 转换。它包含用于交换整数、长整数、浮点数和任意长度的字节数组的字节顺序的代码。
http://www.codeproject.com/KB/cpp/endianness.aspx
交换任意类型的代码如下所示:
#include <algorithm> //required for std::swap
#define ByteSwap5(x) ByteSwap((unsigned char *) &x,sizeof(x))
void ByteSwap(unsigned char * b, int n)
{
register int i = 0;
register int j = n-1;
while (i<j)
{
std::swap(b[i], b[j]);
i++, j--;
}
}
你想使用htonl和类似的。其余的设计是你自己的。