java—将有符号字节转换为无符号半字节

kcwpcxri  于 2021-07-13  发布在  Java
关注(0)|答案(1)|浏览(309)

所以我这里有点小问题,我不知道会出什么问题。这就是为什么我要问这个(我现在给你看的)是否正确。我把二进制文件转换成字节列表,这样我就可以把那些字节转换成半字节。例如:如果我得到96作为十进制数(60作为十六进制数),我想从中得到6和0。127也是一样(hex:7f)-我想要7和15。为了实现这一点,我编写了以下代码:您会注意到,我需要“无符号字节”才能工作

System.out.println((byte) ((UnsignedByte.unsignedToBytes(b) - (UnsignedByte.unsignedToBytes(b) % 16)) / 16));
System.out.println((byte) (UnsignedByte.unsignedToBytes(b) % 16));

public static int unsignedToBytes(byte b) {
    return b & 0xFF;
}

我做错什么了还是这不是问题?

oug3syen

oug3syen1#

使用位移动和位操作:
要获得较低的4位,请使用 lowerNibble = wholeByte & 0x0F 要获取前四位,请使用 upperNibble = (wholeByte >> 4) & 0x0F 这忽略了符号,因为数字的上半部分被 & 0x0F .

相关问题