C在十六进制中转换int并剪切最后两位数字

时间:2013-02-21 14:30:49

标签: int hex

我很喜欢C并且转换整数时遇到问题。

我想做的是以下内容:

我有一个名为:checksum的整数。

我想以十六进制格式转换此整数,然后只取两个最后的数字并将它们转换回dez格式的整数。

示例:

校验和= -864

在Hex中,这将是:FFFFFFFFFFFFFCA0

最后两位数字是:A0

dez格式的“A0”是:160。

我怎样才能在C中做到这一点?

4 个答案:

答案 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)并将其转换回来