解析二进制文件时如何用cout将整数变量输出为对应的ASCII字符
解决方案
最直接的内置方法是将代表ASCII值的整数强制转换为char类型输出即可,不需要引入额外依赖:
- 单字节整数转单个ASCII字符
如果要输出单个字节对应的ASCII字符,直接强转即可:
uint8_t byte = 0x4d; std::cout << static_cast<char>(byte) << std::endl; // 输出 M
- 针对你场景中32位整数存储4个ASCII字符的情况
你已经将大端存储的头四个字节转为主机字节序存在n32Bits中,只需要依次提取每个字节转char输出即可:
std::cout << "n32Bits 对应字符: " << static_cast<char>((n32Bits >> 24) & 0xFF) << static_cast<char>((n32Bits >> 16) & 0xFF) << static_cast<char>((n32Bits >> 8) & 0xFF) << static_cast<char>(n32Bits & 0xFF) << std::endl;
运行上述代码会直接输出你需要的MThd。
补充说明
- 你使用
std::ascii报错的原因是C++标准库不存在这个IO操纵符,属于语法错误。 - 如果遇到0x00、0xFF这类非可打印ASCII值,输出会出现不可见字符或者乱码,和
hexdump的展示逻辑一致。
内容的提问来源于stack exchange,提问作者Nick
相关产品推荐
相关产品推荐

