Java整数到字节数组要短

Java整数到字节数组要短,java,Java,我试图将一个整数转换为一个字节数组(4字节数组),然后我将提取每个字节的最后4位,然后我将从每个字节的最后4位创建一个短字符 我有下面的代码,但它总是打印零 private static short extractShort(byte[] byteArray) { short s = 1; ByteBuffer byteBuffer = ByteBuffer.allocate(4); for(int i = 0; i < byteA

我试图将一个整数转换为一个字节数组(4字节数组),然后我将提取每个字节的最后4位,然后我将从每个字节的最后4位创建一个短字符

我有下面的代码,但它总是打印零


    private static short extractShort(byte[] byteArray) {
        short s = 1;
        ByteBuffer byteBuffer = ByteBuffer.allocate(4);
        for(int i = 0; i < byteArray.length; i++) {
            byte lastFourBytes = extractLast4Bits(byteArray[i]);
            // Uses a bit mask to extract the bits we are interested in
            byteBuffer.put(lastFourBytes);
        }
       return  ByteBuffer.wrap(byteBuffer.array()).getShort();
    }


    private static byte extractLast4Bits(byte byteParam) {
        return  (byte) ( byteParam & 0b00001111);
    }

    private static byte[] intToByteArray(int i) {
        return new byte[] {
            (byte)((i >> 24) & 0xff),
            (byte)((i >> 16) & 0xff),
            (byte)((i >> 8) & 0xff),
            (byte)((i >> 0) & 0xff),
         };
    }

}


专用静态短提取短(字节[]byteArray){
短s=1;
ByteBuffer ByteBuffer=ByteBuffer.allocate(4);
for(int i=0;i>24)和0xff),
(字节)((i>>16)和0xff),
(字节)((i>>8)和0xff),
(字节)((i>>0)和0xff),
};
}
}

如果您有任何帮助,我们将不胜感激。

一旦您获得字节数组,请尝试此


短val=0;
for(字节b:字节){

val你不只是操纵整数并将其转换为短整数有什么原因吗?你应该在我通过构建学习的loopJannik的每次迭代中将输入向右移动,转换掩盖了魔法。你能解释一下for循环中发生了什么吗?它工作得很好。我添加了一些注释。如果你有更多问题,请告诉我w、 我想你知道并使用位操纵。是的,非常感谢。我如何接受此答案?@EdwardBanfa要将答案标记为已接受,请单击答案旁边的复选标记,将其从灰色变为填充。有关管理问题答案的更多详细信息,请参阅