我需要一个函数将格式为0xFFFF
(2字节)的十六进制值转换为十进制(无符号和有符号)。
例如:
0xFFFE
是65534
(未签名)
0xFFFE
是-2
(已签名)
对于 4字节和1字节,我也需要相同的东西。
所有这些选项(3 * 2选项)我需要转换回来 - 从十进制到十六进制(共12个选项)。
我的功能应如下所示:
string Myconverter(int ByteSize, bool IsFromHextoDecimal, bool IsSigned)
{
...
}
如果有内置功能执行这些转换,我想参考/链接。
答案 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");