将hexa转换为int

时间:2016-07-29 19:23:29

标签: c# hex decimal checksum

我正在尝试将一个字节转换为十六进制并计算校验和。 这是我的带有十六进制值的字节数组。

byte[] tocrc = { 0xff, 0xff, 0xff, 0xff, 2, 2, 0, 1, 29, 07, 10, 20, 46, 46, 0 };

我需要计算这个数组的校验和。

 public static byte calcolacrc(byte[] tocrc)
    {
        byte crc = 0;
        for (int i = 0; i < data.Length; i++)
        {
            crc += data[i];
        }
        crc &= 0xff;
        return crc;
    }

我的问题是,当我将字节与十六进制数相加时: 29 它是值29的整数,而不是十六进制 29 是不正确的。 sum的正确值是十进制 41

将十进制转换为十六进制我使用此函数:

value.ToString("X")  

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

你为前4个做得对,你只需要将0x放在每个数字的前面,使其被解释为十六进制。

byte[] tocrc = { 0xff, 0xff, 0xff, 0xff, 0x02, 0x02, 0x00, 0x01, 0x29, 0x07, 0x10, 0x20, 0x46, 0x46, 0x00 };

答案 1 :(得分:1)

如果你想要HEX 29值,在你的数组中放0x29。请记住,您的数组不是来自“十六进制”值 - 它是字节数组,十进制或十六进制只是常量的语法。