繁体   English   中英

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

对于您的示例,对myValueFromDB使用值13,输出为:

{0x0D,0x00,0x00,0x00,0x00,0x00,0x00,0x00}

如您所见, asBytes[0]值为0x0D,其他7个字节为0。

你可以在这个小提琴中自己检查一下;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM