将无符号字符转换为SetWindowTextA

unsigned char to SetWindowTextA

本文关键字:SetWindowTextA 转换 字符 无符号      更新时间:2023-10-16

我试图获取并显示主机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]);

我不确定我是否把字节按正确的顺序排列,但我相信你知道。