16进制转换成10进制遇到的问题

_LinGM 2017-09-11 02:23:25
有16进制数0xEE,先将其转换为字符型(char)0xEE,再将字符转换为整型(int)(char)0xEE。
预想中的该是238,结果确实 -18 。。。???
(int)(char)0x1E 这个转换出来就是正确的 30 ....

请指教 谢谢!!
...全文
914 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
FASM_FASM 2017-09-13
  • 打赏
  • 举报
回复
出现这个现象的原因是,转换时数值被带符号扩展了。也就是符号位被置1了。
_LinGM 2017-09-11
  • 打赏
  • 举报
回复
引用 1 楼 DelphiGuy 的回复:
字面值0xEE在C++中默认就是整型,还转换啥。非要多此一举的话,可以:(int)(unsigned char)0xEE
谢谢指教! 先转char是拿来做其他用 用完过后再把数据转回来 不算多此一举的。
  • 打赏
  • 举报
回复
字面值0xEE在C++中默认就是整型,还转换啥。非要多此一举的话,可以:(int)(unsigned char)0xEE

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧