是否可以用20位而不是Java中的8,16,32写入文件?

问题描述 投票:0回答:1

因此,我目前正在研究lzw算法,以了解有关压缩的信息,我想知道是否可以用自定义大小的位写入文件。

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

java bit file-writing file-read
1个回答
0
投票

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

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

[但是,如果您的意思是说如果有可能在语义上包含20位段的序列的数据流,那么请确保这是可能的。您只需对数据进行位移即可使用写入8位,16位或32位的方法。

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

|--------------------------------------------|
|  1st 20 bit segment  | 2nd 20 bit segment  |
|--------------------------------------------|
| byte1  | byte2  | byte3  | byte4  | byte5  |
|--------------------------------------------|
© www.soinside.com 2019 - 2024. All rights reserved.