我有一个如下所示的数组:
u_int8_t arr[10] = {0x02, 0x0A, 0x01 0x01, 0x00, 0x00, 0x01, 0x00, 0x09, 0x03};
目前我有一个函数可以将此数组打印到终端,它的工作原理如下:
void dump_packet(void* packet, int len)
{
u_int8_t* bytes = (u_int8_t*)packet;
int i = 0;
while (i < len){
printf("%02X-", bytes[i++]);
fflush(stdout);
}
printf("|");
}
所以在屏幕上我看到:02-0A-01-01-00-00-01-00-09-03-|
。我想知道如何更改此函数,以便将数据包存储为上述格式的字符串?我想这样做,以便我可以将收到的数据包写入syslog
。
最佳答案
我采纳了 Joachim Pileborg 的建议,并编辑了我的 dump_packet
函数,如下所示:
void dump_packet(void* packet, int len)
{
u_int8_t* bytes = (u_int8_t*)packet;
int i = 0;
char hex[10];
char hexstring[4*MAXBUFSIZE] = "";
while (i < len){
sprintf(hex, "%02X-", bytes[i]);
strcat(hexstring, hex);
printf("%02X-", bytes[i++]);
fflush(stdout);
}
printf("|");
syslog(LOG_INFO, "%s", hexstring);
}
关于将字节数组转换为字符串以发布到系统日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20120849/