2016-05-26 17 views
0

我需要創建一個有十六進制和int值的字節數組。C#:創建一個int和十六進制值的字節數組

例如:

int value1 = 13; 
int value2 = 31; 
byte[] mixedbytes = new byte[] {0x09, (byte)value1, (byte)value2}; 

問題:31被轉換爲0x1F。它應該是0x31。我試圖將int值轉換爲字符串並返回字節,但這並沒有解決問題。整數不能超過兩位數。

+0

爲何要0X31? – TZHX

+0

我有一個串行設備,只接受它的格式。 – FikLi

+0

0x1f如果整數31的十六進制表示形式爲0x31,則爲49. – TZHX

回答

2

試試這個:

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

+0

如果他們想要(因爲他們聲稱)13和31的整數值;這不是一個解決方案。 – TZHX

+0

如果OP閱讀文章並理解轉換,然後可以自行決定如何繼續,那麼這是一個解決方案。另外,OP從未表示他們想要13和31的十進制值,只是他們想要一個十六進制值0x31,你假設他們想要13和31.這正是我把這篇文章包括進去的原因,因爲它不清楚它們是什麼希望他們需要了解轉換才能繼續。 – CamW

0

我想你可以試試這個方法

string i = "10"; 
    var b = Convert.ToByte(i, 16) 

在該方法10將被存儲爲0x10的

0

該格式通常被稱爲二進制編碼的十進制(BCD)。這個想法是,字節中的半字節都包含一個十進制數字。

在C#中,你可以很容易做到這一點的轉換:

var number = 31; 
var bcd = (number/10) * 16 + (number % 10); 
相關問題