[英]Off-the-Shelf C++ Hex Dump Code
我使用網絡和串行通信軟件工作很多,因此我經常需要使用代碼來顯示或記錄數據包的十六進制轉儲。
每次我這樣做,我都會從頭開始編寫另一個hex-dump例程。 我將要再次這樣做,但我想在這里問:那里有什么好的C ++自由十六進制轉儲代碼嗎?
我想要的功能:
編輯:澄清:我正在尋找可以輕松插入我自己的程序的代碼,以寫入stderr,stdout,日志文件或其他此類輸出流。 我不是在尋找命令行十六進制轉儲實用程序。
我經常使用我很久以前寫過的這個小片段。 在調試等時,它可以簡單易用地添加到任何地方......
#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");
}
}
unix工具xxd
作為vim
一部分分發,根據http://www.vmunix.com/vim/util.html#xxd,xxx的源代碼是ftp://ftp.uni-erlangen.de:21 /pub/utilities/etc/xxd-1.10.tar.gz 。 它是用C語言編寫的,大約是721行。 給出的唯一許可信息是:
* Distribute freely and credit me,
* make money and share with me,
* lose money and don't ask me.
unix工具hexdump
可從http://gd.tuwien.ac.at/softeng/Aegis/hexdump.html獲得 。 它是用C編寫的,可以從源代碼編譯。 它比xxd大很多,並且在GPL下分發。
你能為Wireshark編寫自己的解剖器嗎?
編輯:在問題的精確度之前寫
我已經看到PSPad用作十六進制編輯器,但我通常會做同樣的事情。 我很驚訝這個問題沒有“即時回答”。 這是一個非常普遍的需求。
我在我的一個內部工具中使用了它。
xxd是'標准'十六進制轉儲工具,看起來應該可以解決你的問題
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.