如果您知道数据是大端的,则可以手动进行:
int value = (buffer[i++] << 24) | (buffer[i++] << 16) | (buffer[i++] << 8) | buffer[i++];
这也可以在任何CPU上可靠地工作。注意
i是您当前到缓冲区的偏移量。
另一种方法是改组数组:
byte tmp = buffer[i+3];buffer[i+3] = buffer[i];buffer[i] = tmp;tmp = buffer[i+2];buffer[i+2] = buffer[i+1];buffer[i+1] = tmp;int value = BitConverter.ToInt32(buffer, i);i += 4;
我发现第一个更具可读性,并且没有分支/复杂的代码,因此它也应该工作得很快。在某些平台(CPU已经在运行big-endian)上,第二个也可能会遇到问题。



