簡體   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