如何在 C# 中将 Int64 转换为十六进制以及从十六进制转换为字节
How to convert from Int64 to hex and from hex to byte in c#
我正在尝试通过串行端口向微控制器发送一个字节数组。这是一个可以与微控制器成功通信的示例数组:
byte[] getCommandArray = new byte[7] { 0x02, 0x0D, 0x01, 0x03, 0x30, 0x44, 0x03 };
我需要做的是从数据库中读取不同的值,将它们存储在一个字节数组中,将这个数组发送到串口。我从数据库中读取值 Int64
。此外,为了成功沟通,我需要将这些值转换为十六进制。例如,如果我从数据库中读取 13,我需要将其作为 0x0D 写入我的数组。我可以将 13 转换为 0x0D 作为十六进制字符串,但我无法将其转换为 byte
。如果您有除此逻辑之外的任何其他建议,我将不胜感激。
如果您只想从 Int64
值中获取所有字节,您可以这样做:
Int64 myValueFromDB = 13;
var asBytes = BitConverter.GetBytes(myValueFromDB);
要检查这是否产生了您期望的结果,您可以像这样打印此结果:
Console.WriteLine("{{{0}}}", string.Join(",", asBytes.Select(x => "0x" + x.ToString("X2"))));
对于您的示例,将值 13 用于 myValueFromDB
,输出为:
{0x0D,0x00,0x00,0x00,0x00,0x00,0x00,0x00}
可以看到,asBytes[0]
的值为0x0D,其他7个字节为0。
你可以在这个Fiddle;
中自己检查一下
我正在尝试通过串行端口向微控制器发送一个字节数组。这是一个可以与微控制器成功通信的示例数组:
byte[] getCommandArray = new byte[7] { 0x02, 0x0D, 0x01, 0x03, 0x30, 0x44, 0x03 };
我需要做的是从数据库中读取不同的值,将它们存储在一个字节数组中,将这个数组发送到串口。我从数据库中读取值 Int64
。此外,为了成功沟通,我需要将这些值转换为十六进制。例如,如果我从数据库中读取 13,我需要将其作为 0x0D 写入我的数组。我可以将 13 转换为 0x0D 作为十六进制字符串,但我无法将其转换为 byte
。如果您有除此逻辑之外的任何其他建议,我将不胜感激。
如果您只想从 Int64
值中获取所有字节,您可以这样做:
Int64 myValueFromDB = 13;
var asBytes = BitConverter.GetBytes(myValueFromDB);
要检查这是否产生了您期望的结果,您可以像这样打印此结果:
Console.WriteLine("{{{0}}}", string.Join(",", asBytes.Select(x => "0x" + x.ToString("X2"))));
对于您的示例,将值 13 用于 myValueFromDB
,输出为:
{0x0D,0x00,0x00,0x00,0x00,0x00,0x00,0x00}
可以看到,asBytes[0]
的值为0x0D,其他7个字节为0。
你可以在这个Fiddle;
中自己检查一下