将Byte []转换为BCD转换为int

时间:2016-06-08 12:36:40

标签: c# bytearray

我希望将int的每个组件放入byte[]而不转换它们:

我有:

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

我想分解它:

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

但是这个代码我有

  

'尺寸= 22' ' Type = 18' '参考= 52'

他将十六进制转换为十进制但我想要

  

'尺寸= 16' ' Type = 12' '参考= 34'

我该怎么做?

1 个答案:

答案 0 :(得分:1)

假设您的号码是正确的BCD(即两个数字都不是A .. F),您可以这样做:

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

这个想法是重新解释高位数,它表示十六进制数中的十六位数,作为十进制数的十位数。

例如,将0x52除以16整数生成5,而16的余数生成2。现在,您将5乘以10并添加回2以获得十进制数字52。