使用C#进行简单的左移

时间:2013-09-17 11:53:58

标签: c# bit-shift

我将两个字符串从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

1 个答案:

答案 0 :(得分:3)

您向左移动0xFFFF或65535.左移(&lt;&lt;&lt;&lt;&lt;)运算符的右手操作数是要移位的位数。我认为你的意思是4。

fullAddress = (address[0] << 4);
fullAddress |= address[1];