Java中的Java转换短到字节[]问题
输出: 0000000001100100 000000000 1100100Java中的Java转换短到字节[]问题,java,Java,输出: 0000000001100100 000000000 1100100 结果是一样的。那么,shortToBytes1()和shortToBytes2()之间有什么区别呢?shortToBytes1首先将字节转换为无符号的int值,而第二个则不转换。我建议使用第一个。您能解释一下您的想法吗(sNum>>)&0xFF与sNum>>8的区别吗?如果你想决定在不同的情况下使用哪种方法,这一点很重要。你可能会感兴趣。我不认为“有什么区别?”是你真正想问的问题。你很可能会得到一些油嘴滑舌的答案。如果
结果是一样的。那么,shortToBytes1()和shortToBytes2()之间有什么区别呢?
shortToBytes1
首先将字节转换为无符号的int值,而第二个则不转换。我建议使用第一个。您能解释一下您的想法吗(sNum>>)&0xFF与sNum>>8的区别吗?如果你想决定在不同的情况下使用哪种方法,这一点很重要。你可能会感兴趣。我不认为“有什么区别?”是你真正想问的问题。你很可能会得到一些油嘴滑舌的答案。如果你把它改为“我希望X发生,但Y发生了,我不知道为什么,即使在我读了short
和byte
和>
和&
之后,有人能解释一下吗?”你应该会得到一个更有用的答案。谢谢你的回答。我的意思是,即使shortToBytes2()没有首先将字节转换为其无符号的int值,结果仍然可以。那么为什么需要shortToBytes 1()。
public static void main(String[] args) throws Exception {
short sh = 100;
printBytesString(shortToBytes1(sh));
System.out.println();
printBytesString(shortToBytes2(sh));
}
public static byte[] shortToBytes1(short sNum) {
byte[] bytesRet = new byte[2];
bytesRet[0] = (byte)((sNum >> 8) & 0xFF);
bytesRet[1] = (byte)(sNum & 0xFF);
return bytesRet;
}
public static byte[] shortToBytes2(short sNum) {
byte[] bytesRet = new byte[2];
bytesRet[0] = (byte)(sNum >> 8);
bytesRet[1] = (byte)(sNum);
return bytesRet;
}