【发布时间】:2014-07-31 12:31:54
【问题描述】:
我使用以下代码将一个短数字转换为 3 字节数组:
static byte[] convertTo3ByteArray(short s) {
byte[] ret = new byte[3];
ret[0] = (byte) (s & 0xff);
ret[1] = (byte) ((s >> 8) & 0xff);
ret[2] = (byte) (0x00);
return ret;
}
这很好用。
我在 Stackoverflow 上找到了将数组转换回数字的代码:
static int convertToInt(byte[] b) {
return ((b[0] << 0) | (b[1] << 8) | (b[2] << 16));
}
当我将 258 转换为字节数组,然后使用此代码时,它会返回 258。
但对于数字 675,此代码返回 -93。
如何更改 convertToShort 方法以恢复 675? 我想这与位移和数据丢失有关吗?还是有符号字节?
【问题讨论】:
-
顺便说一句:您返回
int而不是short。 -
对!我已经更改了方法名称,所以没有人会感到困惑。最后,它是 int 还是 short 对我来说并不重要,因为我关心数字。