我将两个字符串从ASCII十六进制转换为字节
byte[] address = new byte[2];
int fullAddress;
address[0] = Convert.ToByte(stringZero, 16);
address[1] = Convert.ToByte(stringOne, 16);
fullAddress = (address[0] << 0xFFFF);
fullAddress |= address[1];
这会在fullAddress
的高尖端上产生错误的输出,低半字节始终是正确的。该如何正确完成?
编辑:地址应为32位值。 例如,
StringZero = 0x01
StringOne = 0x02
fullAddress = 0x0102
答案 0 :(得分:3)
您向左移动0xFFFF或65535.左移(&lt;&lt;&lt;&lt;&lt;)运算符的右手操作数是要移位的位数。我认为你的意思是4。
fullAddress = (address[0] << 4);
fullAddress |= address[1];