在下面的代码中,mac_str是char指针,mac是uint8_t 数组
sscanf(mac_str,"%x:%x:%x:%x:%x:%x",&mac[0],&mac[1],&mac[2],&mac[3],&mac[4],&mac[5]);当我尝试上面的代码时,它给了我一个警告:
warning: format ‘%x’ expects argument of type ‘unsigned int *’, but argument 8 has type ‘uint8_t *’ [-Wformat]但我在他们指定的代码中看到了
sscanf(str,"%hhx:%hhx:%hhx:%hhx:%hhx:%hhx",&mac[0],&mac[1],&mac[2],&mac[3],&mac[4],&mac[5]);这并没有给出任何警告,但两者的作用是一样的。
为什么要使用hhx而不仅仅是x
发布于 2014-02-14 14:49:21
hh是一个长度修饰符,它指定参数的目标类型。转换格式说明符x的默认设置是unsigned int*。使用hh,它变成了unsigned char*或signed char*。
有关详细信息,请参阅表herein。
发布于 2014-02-14 14:48:04
hhx将输入转换为无符号字符,而x将转换为无符号int。而且,由于uint8_t是类型为unsigned char的类型,所以hhx修正了警告。
https://stackoverflow.com/questions/21782244
复制相似问题