我目前正在处理一些二进制数据。为了检查和调试我的应用程序先前生成的数据,我使用hexdump,面临 hexdump 似乎无法提取 64 位整数字段的障碍。鉴于以下最小示例:
#include <iostream>
#include <fstream>
#include <cstdint>
int main(int argc, char** argv){
std::ofstream os("tmp.bin", std::ios::out | std::ios::binary);
uint64_t x = 7;
os.write((char*)&x,sizeof(uint64_t));
os.close();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我在我的系统上执行一个简单的十六进制转储:
hexdump tmp.bin
> 0000000: 0007 0000 0000 0000
> 0000008:
Run Code Online (Sandbox Code Playgroud)
现在尝试提取 64 位宽度的 unsigned int 产生:
hexdump -e '/8 "%u"' tmp.bin
> hexdump: bad byte count for conversion character u
Run Code Online (Sandbox Code Playgroud)
根据David Mair写得很好的hexdump-manual应该可以做到,但我没有成功。
我错过了什么?