CString CGetDlg::GetCharVal(char val)
{ CString ff;
ff.Format("%X",val);
return ff
}
以上代码在得到ascill字符的ascill码时,多数正确,但如应返回BF 或B0的时候,前面却有一大堆FFFFFF。怎么回事
因为 char 只有一个字节 8 个二进制位 ,最高位为符号位 ,为1时 ,表示负数 ,所以它的表示范围在 -127 至 128之间 ,所以当val大于128时转换结果就不是你要的了。可以用成无符号的,如此,范围在0 到 255之间。
CString CGetDlg::GetCharVal(unsigned char val)
{ CString ff;
ff.Format("%X",val);
return ff
}
本文介绍了一段用于将ASCII字符转换为十六进制表示的C++代码,并解释了为何对于超过128的ASCII值会出现错误显示。通过将char类型更改为unsigned char解决了这一问题。

674

被折叠的 条评论
为什么被折叠?



