2016-06-08 146 views
1

我想放在intbyte[]每一個組件,而不將它們轉換:轉換字節[]爲BCD爲int

我:

byte[] byte = {0x16,0x12,0x34} 

我想它分解:

int Size = byte[0]; 
int Type = byte[1]; 
int Ref = byte[2]; 

但有了這個代碼我有

'尺寸= 22' '類型= 18' '參考值= 52'

赫轉換十六進制到十進制,但我想

'尺寸= 16' '類型= 12'「參考值= 34 '

我該怎麼做?

回答

1

假設你的號碼是正確的BCD(即,既不位數爲A ... F),你可以做這樣的:

int Size = 10 * (byte[0]/16) + (byte[0] % 16); 

的想法是重新詮釋高位的,它代表的數十六進制數中的十進制數,十進制數中的十進制數。

例如,將0x52除以16整數產生5,而其餘的16產生2。現在你乘以5乘以十,並加回2得到十進制數52.