将hexa转换为int

本文关键字:int 转换 hexa | 更新日期: 2023-09-27 17:59:12

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

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。在十进制中,要求和的正确值为41

要将十进制转换为十六进制,我使用以下函数:

value.ToString("X")  

我该如何解决这个问题?

将hexa转换为int

您对前4个数字做得很好,只需要将0x放在每个数字的前面,就可以将其解释为十六进制。

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

如果想要HEX 29值,请在数组中放入0x29。请记住,您的数组不是由"十六进制"值组成的——它是由字节组成的数组,十进制或十六进制是唯一的常量语法。