我正在用 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", checksum)
如果您接受字符串作为结果,则可以递归地实现到十六进制的转换。从此字符串中,您可以轻松地删除最后两位数字(检查 google/SO)并将它们转换回来