gpt4 book ai didi

java - java中是否可以以20位而不是8、16、32位写入文件?

转载 作者:行者123 更新时间:2023-12-02 09:27:23 25 4
gpt4 key购买 nike

所以我目前正在研究 lzw 算法来了解压缩,我想知道是否可以用自定义大小位写入文件。

所以我使用DataOutputStream,只能用8、16和32位写入,但我想知道是否可以用20位写入以节省空间。我所说的节省空间的意思是,当我压缩文件时,我的代码是 19 位,因此我不想使用 writeInt() 将它们写入 32 位,而是使用 20 位写入,这样压缩文件会更小。

最佳答案

Java支持的最小数据单位是8位的字节。因此,您可以使用 Java 编写的存储 20 位信息的最小文件大小为 24 位(3 字节)。

还有一个事实是,大多数操作系统支持的底层文件系统不支持任意位大小的文件大小。

但是,如果您的意思是是否可以拥有语义上由 20 位段组成的序列的数据流,那么当然这是可能的。您只需对数据进行位移位即可使用写入 8、16 或 32 位的方法。

例如,可以用 5 个字节写入 2 个 20 位的段,其中前 2 个字节包含第一个段的 16 位,中间字节包含第一个段的剩余 4 位和第二个段的前 4 位段,最后 2 个字节包含第二段的剩余 16 位:

|--------------------------------------------|
| 1st 20 bit segment | 2nd 20 bit segment |
|--------------------------------------------|
| byte1 | byte2 | byte3 | byte4 | byte5 |
|--------------------------------------------|

关于java - java中是否可以以20位而不是8、16、32位写入文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58244541/

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