如何在 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;

中自己检查一下