我绝对不做C,但对于一件小事,我需要做一个非常简单的功能。 我有理解结果的问题。
我有一个MAC地址,我需要输出PIN码。 (wiimote)到目前为止我已经掌握了这个功能
int main(int argc, char *argv[])
{
char pin[6];
pin[0] = 0x61;
pin[1] = 0xC7;
pin[2] = 0x5E;
pin[3] = 0x00;
pin[4] = 0x9E;
pin[5] = 0xCC;
printf(pin);
return 0;
}
问题在于我得到了结果: aヌ^ 这是我应该得到的吗?价值应该不同?
David Hoelzer说,我可能会找到将Hexa转换为字符串的解决方案吗?
谢谢!
答案 0 :(得分:3)
这是你需要的吗?
unsigned char pin[6]; // Unsigned ...
pin[0] = 0x61;
pin[1] = 0xC7;
pin[2] = 0x5E;
pin[3] = 0x00;
pin[4] = 0x9E;
pin[5] = 0xCC;
printf("%02x:%02x:%02x:%02x:%02x:%02x\n",pin[0],pin[1],pin[2],pin[3],pin[4],pin[5]);
将打印
61:c7:5e:00:9e:cc
说明:
%x // Print a number in hexadecimal format using lower case (%X for upper case)
%2x // Print at least 2 characters (prepend with space)
%02x // Print at least 2 characters and prepend with 0
使用unsigned char pin[6]
可避免打印过程中的标记扩展。如果您使用char pin[6]
,则会获得
61:ffffffc7:5e:00:ffffff9e:ffffffcc
这可能不是你想要的。
如果由于某种原因需要使用char
,您可以执行以下操作:
char pin[6];
pin[0] = 0x61;
pin[1] = 0xC7;
pin[2] = 0x5E;
pin[3] = 0x00;
pin[4] = 0x9E;
pin[5] = 0xCC;
printf("%02hhx:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx\n",pin[0],pin[1],pin[2],pin[3],pin[4],pin[5]);
^^
Force type to char