将十六进制字符串转换为数字类型并返回

时间:2013-04-15 09:08:43

标签: c# hex byte int32

我需要一个函数将格式为0xFFFF(2字节)的十六进制值转换为十进制(无符号和有符号)。

例如:

0xFFFE65534(未签名)
0xFFFE-2(已签名)

对于 4字节和1字节,我也需要相同的东西。

所有这些选项(3 * 2选项)我需要转换回来 - 从十进制到十六进制(共12个选项)。

我的功能应如下所示:

    string Myconverter(int ByteSize, bool IsFromHextoDecimal, bool IsSigned)
    {
        ...
    }

如果有内置功能执行这些转换,我想参考/链接。

1 个答案:

答案 0 :(得分:3)

使用Convert类中的方法将字符串解析为数字。要解析无符号的2字节值,请使用ToUInt16方法,并指定基数16:

ushort value = Convert.ToUInt16("0xFFFF", 16);

将这些方法用于其他格式:

ToInt16  = signed 2 byte
ToUInt32 = unsigned 4 byte
ToInt32  = signed 4 byte
ToByte   = unsigned 1 byte
ToSByte  = signed 1 byte

要将数字格式化为十六进制字符串,您可以使用X格式(或x获取小写字母)并指定位数:

string formatted = value.ToString("X4");

但是不会有0x前缀,所以如果你想要,你必须添加它:

string formatted = "0x" + value.ToString("X4");