0

次のコードでは、システムごとに異なる出力が得られます。

int fd = open(filename, O_RDWR | O_CREAT, S_IRWXU | S_IRWXG | S_IRWXO);
byte_t data[] = { 0x00, 0x01, 0x02, 0x03, 0x0a, 0x0b 0x0c, 0x0d };

write(fd, data, sizeof(data));

Macでは、ファイル名の「hexdump」により、期待どおりの結果が得られます

00 01 02 03 0a 0b 0c 0d

Ubuntu と Windows (コードは異なりますが、効果は同じです) では、次のようになります。

01 00 03 02 0b 0a 0d 0c

プラットフォームに印刷してもらいたい

00 01 02 03 0a 0b 0c 0d

では、どのように進めればよいでしょうか?

4

1 に答える 1

1

hexdump ユーティリティがバイトをスワップしているようです。各プラットフォームで使用した hexdump コマンドを示してください。

それを確認するには、でテストします

byte_t data[] = { 'a', 'b', 'c', 'd', 'e' }

hexdump と cat(または type) の出力を比較します。

于 2013-08-22T19:35:26.130 に答える