【问题标题】:C Convert int in Hex and cut the last two digitsC 将 int 转换为十六进制并剪切最后两位
【发布时间】:2013-02-06 22:15:13
【问题描述】:

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

我想做的是:

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

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

示例:

校验和 = -864

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

最后两位是:A0

dez 格式的“A0”是:160。

如何在 C 中做到这一点?

【问题讨论】:

    标签: int hex


    【解决方案1】:
    char m_c_end_dec = (char)checksum & 0xff;
    int m_end_dec = (int)m_c_end_dec;
    

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

    【讨论】:

      【解决方案2】:

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

      printf("checksum is %d\n", checksum & 0xff);
      

      【讨论】:

        【解决方案3】:

        或使用字符串格式。 例如

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

        或大写 printf("%02X", 校验和)

        【讨论】:

          【解决方案4】:

          conversion to hex 可以递归实现,如果你接受字符串作为结果。从此字符串中,您可以轻松地剪切最后两位数字(检查 google/SO)并将它们转换回来

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2012-08-08
            • 2015-09-17
            • 2015-04-15
            • 1970-01-01
            • 1970-01-01
            • 2017-07-31
            • 2013-07-20
            • 2012-06-17
            相关资源
            最近更新 更多