将无符号字符转换为SetWindowTextA
unsigned char to SetWindowTextA
我试图获取并显示主机mac id
HWND Ui_Item = GetDlgItem(Wwnd_Mess, IDC_MYMAC);
unsigned char MACData[6];
UUID uuid;
UuidCreateSequential( &uuid );
for (int i = 2; i < 8; i++){
MACData[i - 2] = uuid.Data4[i];
}
char HostMAC[13] = {MACData[0], '-', MACData[1], '-', MACData[2], '-', MACData[3], '-', MACData[4], '-', MACData[5], '-', ' '};
SetWindowTextA( Ui_Item, HostMAC);
但这看起来只是在吐出随机字符?有什么想法吗?
感谢
MAC地址只有6个字节的数据。您的代码试图将每个字节解释为ANSI编码的字符。你得到的结果正是人们所期望的。您需要将每个字节转换为十六进制表示。
例如:
char HostMAC[18];
sprintf(HostMAC, "%.2X-%.2X-%.2X-%.2X-%.2X-%.2X", MACData[5], MACData[4], MACData[3],
MACData[2], MACData[1], MACData[0]);
我不确定我是否把字节按正确的顺序排列,但我相信你知道。