0

在 Windows 上的 C 程序中,我们需要像 Java 字节缓冲区一样读写,它将二进制文件存储在 BIG_ENDIAN 中

该算法描述于: http: //mindprod.com/jgloss/binaryformats.html

需要读写int和float。

有没有人有执行此操作的示例 c 或 C++ 代码或参考?

TIA,伯特

4

2 回答 2

1

我认为困难在于在 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--;
   }
}
于 2009-06-16T14:50:32.827 回答
0

你想使用htonl和类似的。其余的设计是你自己的。

于 2009-06-16T14:57:03.967 回答