2016-06-08 83 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.