1 回答

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超11個(gè)贊
首先,您需要了解符號(hào)擴(kuò)展。您需要將每個(gè)字節(jié)視為無符號(hào)值。
long v = 0;
byte q = -2; // unsigned value of 254
v = v + q;
System.out.println(v); // prints -2 which is not what you want.
v = 0;
v = v + (q & 0xFF); // mask off sign extension from q.
System.out.println(v); // prints 254 which is correct.
這是一種方法。
long val = 0;
byte[] bytes = { -1, 12, 99, -121, -3, 123
};
for (int i = 0; i < bytes.length; i++) {
// shift the val left by 8 bits first.
// then add b. You need to mask it with 0xFF to
// eliminate sign extension to a long which will
// result in an incorrect conversion.
val = (val << 8) | ((i == 0 ? bytes[i]
: bytes[i] & 0xFF));
}
System.out.println(val);
添加回答
舉報(bào)