gpt4 book ai didi

java - 在字节数组中保存字节数组的长度

转载 作者:行者123 更新时间:2023-11-29 05:31:40 25 4
gpt4 key购买 nike

我在 BufferedOutputStream 中写了三次:

b1 = baos1.toByteArray();  
b2 = baos2.toByteArray();

bos.write(b1);
bos.write(b2);
bos.write(b1.length);

System.out.println(b1.length);
System.out.println(b2.length);

bos.flush();
bos.close();

我想获取在另一个类中写入的值 (b1.length) 但我获取的值与第一个 *.println() 不同。

System.out.println(aux.length); // The entire stream (b1+b2+b1.length)
System.out.println(aux[aux.length - 1]);

例如:

打印 1 --> 123744

打印 2 --> 53858

打印 3 --> 177603

打印 4 --> 96

在这种情况下,println1 和 println4 应该返回相同的大小。我做错了什么?

我检查过写入了 1 个字节 (177603-123744-53858 = 1),即 b1.length 字节。

谁能帮我正确写出第一个字节数组的大小?

最佳答案

Java 中的单个字节 是范围为-128..127 的有符号值。这不足以存储您要存储的值。

您应该至少编写一个 4 字节的整数来管理最大 Integer.MAX_VALUE 的长度。

发生的事情是该值被截断为 1 个字节,这很容易看出

123744 == 0x1E360
0x1E360 & 0xFF == 0x60
0x60 = 96

关于java - 在字节数组中保存字节数组的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20875068/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com