我有一个网络捕获工具,可以捕获数据包并对其进行一些处理。现在,这是代码的一小部分。 u_char
是unsigned char
的名称。当我尝试将变量smac
打印到stdout
时,我得到的只是000000000000
在屏幕上。我想打印实际的smac
和dmac
。
char * str;
char converted[6*2 + 1];
u_char smac[6], dmac[6];
int i;
if (ntop_lua_check(vm, __FUNCTION__, id, LUA_TSTRING))
return(CONST_LUA_PARAM_ERROR);
if ((str = (char*)lua_tostring(vm, id)) == NULL)
return(CONST_LUA_PARAM_ERROR);
sscanf(str, "%hhx:%hhx:%hhx:%hhx:%hhx:%hhx",
&smac[0], &smac[1], &smac[2], &smac[3], &smac[4], &smac[5]);
for (i = 0; i < 6; i++)
{
sprintf(&converted[i*2], "%02X", smac[i]);
}
printf("%s\n", converted);
无符号字符的问题是否被int
提升为sprintf
或者某些东西并打印出不必要的两个字节?我不确定。任何帮助都会很有价值。谢谢。