【发布时间】:2013-02-06 22:15:13
【问题描述】:
我正在用 C 语言编写,但在转换整数时遇到了问题。
我想做的是:
我有一个整数叫做:校验和。
我想将此整数转换为十六进制格式,然后只取最后两位数字并将它们转换回 dez 格式的整数。
示例:
校验和 = -864
在十六进制中,这将是:FFFFFFFFFFFFFCA0
最后两位是:A0
dez 格式的“A0”是:160。
如何在 C 中做到这一点?
【问题讨论】:
我正在用 C 语言编写,但在转换整数时遇到了问题。
我想做的是:
我有一个整数叫做:校验和。
我想将此整数转换为十六进制格式,然后只取最后两位数字并将它们转换回 dez 格式的整数。
示例:
校验和 = -864
在十六进制中,这将是:FFFFFFFFFFFFFCA0
最后两位是:A0
dez 格式的“A0”是:160。
如何在 C 中做到这一点?
【问题讨论】:
char m_c_end_dec = (char)checksum & 0xff;
int m_end_dec = (int)m_c_end_dec;
简单转换取最后一位,因为 char 只有 1 位,然后将其重新转换为 int,将 A0 设为 160。
【讨论】:
我不知道这与(中间)十六进制表示有什么关系(我也不明白你为什么需要大喊大叫)。只需获取校验和的最后一个字节,并使用适当的格式字符串来打印它:
printf("checksum is %d\n", checksum & 0xff);
【讨论】:
或使用字符串格式。 例如
printf("%02x", 校验和)
或大写 printf("%02X", 校验和)
【讨论】:
conversion to hex 可以递归实现,如果你接受字符串作为结果。从此字符串中,您可以轻松地剪切最后两位数字(检查 google/SO)并将它们转换回来
【讨论】: