0

我正在用 C 语言编写,并且在转换整数时遇到问题。

我想要做的是以下内容:

我有一个整数叫做:校验和。

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

例子:

校验和 = -864

在十六进制中,这将是:FFFFFFFFFFFFFCA0

最后两位数字是:A0

dez格式的“A0”是:160。

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

4

4 回答 4

1
char m_c_end_dec = (char)checksum & 0xff;
int m_end_dec = (int)m_c_end_dec;

简单转换需要最后一位,因为 char 只有 1 位,然后将其重新转换为 int,将 A0 设为 160。

于 2013-02-21T14:36:16.137 回答
0

我不知道这与(中间)十六进制表示有什么关系(我也不明白你为什么需要大喊大叫)。只需获取校验和的最后一个字节并使用适当的格式字符串来打印它:

printf("checksum is %d\n", checksum & 0xff);
于 2013-02-21T14:35:45.667 回答
0

或使用字符串格式。例如

printf("%02x", 校验和)

或大写 printf("%02X", checksum)

于 2013-02-21T14:36:41.877 回答
0

如果您接受字符串作为结果,则可以递归地实现到十六进制的转换。从此字符串中,您可以轻松地删除最后两位数字(检查 google/SO)并将它们转换回来

于 2013-02-21T14:41:41.063 回答