gpt4 book ai didi

c++ - 现成的 C++ 十六进制转储代码

转载 作者:IT老高 更新时间:2023-10-28 22:16:09 25 4
gpt4 key购买 nike

我经常使用网络和串行通信软件,因此我经常需要编写代码来显示或记录数据包的十六进制转储。

每次我这样做时,我都会从头开始编写另一个十六进制转储例程。我将再次这样做,但我想我会在这里问:有没有什么好的免费的 C++ 十六进制转储代码?

我想要的功能:

  • 每行 N 个字节(其中 N 可以通过某种方式配置)
  • 可选的 ASCII/UTF8 转储与十六进制一起
  • 可配置缩进、每行前缀、每行后缀等。
  • 最小的依赖(理想情况下,我希望代码都在头文件中,或者是我可以粘贴的片段)

编辑: 澄清:我正在寻找可以轻松放入我自己的程序以写入标准错误、标准输出、日志文件或其他此类输出流的代码。我不是在寻找命令行十六进制转储实用程序。

最佳答案

我经常使用我很久以前写的这个小片段。调试等时在任何地方都可以轻松添加...

#include <ctype.h>
#include <stdio.h>

void hexdump(void *ptr, int buflen) {
unsigned char *buf = (unsigned char*)ptr;
int i, j;
for (i=0; i<buflen; i+=16) {
printf("%06x: ", i);
for (j=0; j<16; j++)
if (i+j < buflen)
printf("%02x ", buf[i+j]);
else
printf(" ");
printf(" ");
for (j=0; j<16; j++)
if (i+j < buflen)
printf("%c", isprint(buf[i+j]) ? buf[i+j] : '.');
printf("\n");
}
}

关于c++ - 现成的 C++ 十六进制转储代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29242/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com