如何将字节打印为十六进制?

新手上路,请多包涵

我知道在 C# 中你可以使用 String.Format 方法。但是你如何在 C++ 中做到这一点?是否有允许我将字节转换为十六进制的功能?只需要将 8 字节长的数据转换为十六进制,我该怎么做?

原文由 Danny 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

好吧,您可以一次将一个字节(无符号字符)转换为这样的数组

char buffer [17];
buffer[16] = 0;
for(j = 0; j < 8; j++)
    sprintf(&buffer[2*j], "%02X", data[j]);

原文由 bentech 发布,翻译遵循 CC BY-SA 3.0 许可协议

您可以使用 C++20 std::format 这类似于 C# 中的 String.Format

 std::string s = std::format("{:x}", std::byte(42)); // s == 2a

std::format 广泛可用之前,您可以使用 {fmt} 库std::format 基于( godbolt ):

 std::string s = fmt::format("{:x}", std::byte(42)); // s == 2a

免责声明:我是 {fmt} 和 C++20 std::format 的作者。

原文由 vitaut 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题