【发布时间】:2012-01-06 17:02:05
【问题描述】:
我刚刚开始学习文件压缩,但遇到了一些障碍。我有一个应用程序,它将诸如“程序”之类的字符串编码为压缩二进制表示"010100111111011000"(请注意,这仍然存储为字符串)。
Encoding
g 111
r 10
a 110
p 010
o 011
m 00
现在我需要使用FileOutputStream 将其写入文件系统,我遇到的问题是,如何将字符串“010100111111011000”转换为要写入的byte[]/bytes FileOutputStream的文件系统?
我以前从未使用过比特/字节,所以我在这里有点走投无路。
【问题讨论】:
-
您谈论“压缩二进制表示”,然后说您有一个 18 个字符长(“010100111111011000”)的
String来表示一个 7 个字符长的单词(“程序”)。你确定你的意思是你在问什么?通常,您会将这些位设置为 X 个字节(在本例中为 3 个)。 -
查找“位移运算符”:
>>、>>>、<<。 -
Brian,原始消息翻译成二进制后大小为56bits,编码后的消息只有18bits。凯文,人们一直在告诉我,但我仍然无法在使用这些运算符和能够将其转换为字节数组之间建立联系。
-
@JohnLotacs - 不,不是,如果你说的是
Strings,你说你的问题是混乱的根源。如果你有一个String如你所说,你没有位。您有一堆字符0和1(具体来说,每个字符都有一个 16 位 Unicode 字符,使您的内存在String对象的开销之前使用 36 个字节) - 要清楚,如果你有String你有一组位的文本表示,用字符 0 和 1 表示。 -
Brian,这就是问题所在,将位的字符串表示形式转换为一组字节。
标签: java byte bit-manipulation bits huffman-code