我有一个字节数组,例如(字节数组可以多于或少于3个字节)
byte[] array = {0b00000011, 0b00111011, 0b01010101}
如何删除最后一位字节: 0b 0 0000011,0b 0 0111011,0b 0 1010101 因为我想得到像这样的结果11 | 0111011 | 1010101 但我不知道该怎么做
答案 0 :(得分:0)
这不是很清楚,但也许我理解:你想删除一个字节前面的所有非重要位。你可以使用一个字符串;在伪代码中:
take a byte value N (or word or whatever)
prepare an empty string ST
while N<>0
if (N & 1)
then ST = "1"+ST
else ST = "0"+ST
N = N >> 1
end
现在字符串ST包含你想要的东西(如果你想要的话......)。
答案 1 :(得分:0)
如果你想保留前导零,你可以这样做。
StringBuilder sb = new StringBuilder();
String sep = "";
for (byte b : bytes) {
sb.append(sep);
// set the top byte bit to 0b1000_0000 and remove it from the String
sb.append(Integer.toBinaryString(0x80 | (b & 0x7F)).substring(1));
sep = '|';
}
String s = sb.toString();
答案 2 :(得分:0)
byte[] array = { 0b00000011, 0b00111011, 0b01010101 };
int result = 0;
for (byte currentByte : array) {
result <<= 7; // shift
result |= currentByte & 0b0111_1111;
}
System.out.println(Integer.toBinaryString(result));
打印:
1101110111010101
如果您的数组超过4个字节,则可能会发生未检测到的int溢出。