Java中的Java转换短到字节[]问题

Java中的Java转换短到字节[]问题,java,Java,输出: 0000000001100100 000000000 1100100 结果是一样的。那么,shortToBytes1()和shortToBytes2()之间有什么区别呢?shortToBytes1首先将字节转换为无符号的int值,而第二个则不转换。我建议使用第一个。您能解释一下您的想法吗(sNum>>)&0xFF与sNum>>8的区别吗?如果你想决定在不同的情况下使用哪种方法,这一点很重要。你可能会感兴趣。我不认为“有什么区别?”是你真正想问的问题。你很可能会得到一些油嘴滑舌的答案。如果

输出: 0000000001100100 000000000 1100100


结果是一样的。那么,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;
}