C# 如何在c中从Int64转换为十六进制以及从十六进制转换为字节#

C# 如何在c中从Int64转换为十六进制以及从十六进制转换为字节#,c#,hex,type-conversion,byte,int64,C#,Hex,Type Conversion,Byte,Int64,我正试图通过串口向微控制器发送一个字节数组。这是一个可以成功与微控制器通信的示例阵列: byte[]getCommandArray=新字节[7]{0x02,0x0D,0x01,0x03,0x30,0x44,0x03} 我需要做的是从数据库中读取不同的值,将它们存储在字节数组中,然后将该数组发送到串行端口。我从数据库中读取的值为Int64。此外,为了实现成功的通信,我需要将这些值转换为十六进制。例如,如果从数据库中读取13,则需要将其作为0x0D写入数组。我可以将13转换为十六进制字符串的0x0D

我正试图通过串口向微控制器发送一个字节数组。这是一个可以成功与微控制器通信的示例阵列:

byte[]getCommandArray=新字节[7]{0x02,0x0D,0x01,0x03,0x30,0x44,0x03}


我需要做的是从数据库中读取不同的值,将它们存储在字节数组中,然后将该数组发送到串行端口。我从数据库中读取的值为
Int64
。此外,为了实现成功的通信,我需要将这些值转换为十六进制。例如,如果从数据库中读取13,则需要将其作为0x0D写入数组。我可以将13转换为十六进制字符串的0x0D,但无法将其转换为字节。如果你有任何其他的建议,除了这个逻辑,我将不胜感激

如果您只想从
Int64
值中获取所有字节,可以这样做:

Int64 myValueFromDB = 13;
var asBytes = BitConverter.GetBytes(myValueFromDB);
Console.WriteLine("{{{0}}}", string.Join(",", asBytes.Select(x => "0x" + x.ToString("X2"))));    
要检查这是否产生了预期的结果,可以按如下方式打印此结果:

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


你可以在这里自己检查一下

你看到了吗?检查这是否有帮助:我已经检查了这些链接,但我需要将我的值存储为一个字节,而不是字节数组。就像我说的,我需要将13转换为0x0D,并将0x0D存储在字节数组中。@vontarro,为什么示例中显示的字节数组包含7个字节,而不是从
Int64
中获得的8个字节?@Alex所有这些值都是不同的。我不确定是否可能,但我需要在字节数组中将数字13存储为0x0D。因此,数组的第二个数字应该表示13为0x0Ddo。你知道为什么它在我的计算机上生成0x37而不是0x0D吗?如果你在一个空项目中运行与小提琴中完全相同的代码,它会生成一个所有值都为0x37的数组吗?它现在工作得很好,我不知道它为什么生成0x37。谢谢!