我很喜欢C并且转换整数时遇到问题。
我想做的是以下内容:
我有一个名为:checksum的整数。
我想以十六进制格式转换此整数,然后只取两个最后的数字并将它们转换回dez格式的整数。
示例:
校验和= -864
在Hex中,这将是:FFFFFFFFFFFFFCA0
最后两位数字是:A0
dez格式的“A0”是:160。
我怎样才能在C中做到这一点?
答案 0 :(得分:1)
char m_c_end_dec = (char)checksum & 0xff;
int m_end_dec = (int)m_c_end_dec;
simple cast取最后一位,因为char只有1位,然后将它重新转换为int,给你A0为160.
答案 1 :(得分:0)
我不知道这与(中间)十六进制表示有什么关系(我也不明白为什么你需要对它大喊大叫)。只需取校验和的最后一个字节并使用适当的格式字符串进行打印:
printf("checksum is %d\n", checksum & 0xff);
答案 2 :(得分:0)
或使用字符串格式。 e.g
printf(“%02x”,校验和)
或大写 printf(“%02X”,校验和)
答案 3 :(得分:0)
如果接受字符串作为结果,则可以递归地实现conversion to hex。从这个字符串,您可以轻松地剪切最后两位数(检查谷歌/ SO)并将其转换回来