我需要創建一個有十六進制和int值的字節數組。C#:創建一個int和十六進制值的字節數組
例如:
int value1 = 13;
int value2 = 31;
byte[] mixedbytes = new byte[] {0x09, (byte)value1, (byte)value2};
問題:31被轉換爲0x1F。它應該是0x31。我試圖將int值轉換爲字符串並返回字節,但這並沒有解決問題。整數不能超過兩位數。
我需要創建一個有十六進制和int值的字節數組。C#:創建一個int和十六進制值的字節數組
例如:
int value1 = 13;
int value2 = 31;
byte[] mixedbytes = new byte[] {0x09, (byte)value1, (byte)value2};
問題:31被轉換爲0x1F。它應該是0x31。我試圖將int值轉換爲字符串並返回字節,但這並沒有解決問題。整數不能超過兩位數。
試試這個:
int value1 = 0x13;
int value2 = 0x31;
byte[] mixedbytes = new byte[] { 0x09, (byte)value1, (byte)value2 };
而且,你似乎並不理解十進制和十六進制之間的轉換。十進制31 1F十六進制,期待它在十六進制31以更好地理解十進制和十六進制之間的轉換的一個壞的期望,請看看這裏:http://www.wikihow.com/Convert-from-Decimal-to-Hexadecimal
我想你可以試試這個方法
string i = "10";
var b = Convert.ToByte(i, 16)
在該方法10將被存儲爲0x10的
該格式通常被稱爲二進制編碼的十進制(BCD)。這個想法是,字節中的半字節都包含一個十進制數字。
在C#中,你可以很容易做到這一點的轉換:
var number = 31;
var bcd = (number/10) * 16 + (number % 10);
爲何要0X31? – TZHX
我有一個串行設備,只接受它的格式。 – FikLi
0x1f如果整數31的十六進制表示形式爲0x31,則爲49. – TZHX