gpt4 book ai didi

c - 使用整个 unicode 库的 LZW 压缩

转载 作者:太空宇宙 更新时间:2023-11-04 02:58:28 25 4
gpt4 key购买 nike

我正在尝试做这道题:

Assume we have an initial alphabet of the entire Unicode character set, instead of just all the possible byte values. Recall that unicode characters are unsigned 2-byte values, so this means that each 2 bytes of uncompressed data will be treated as one symbol, and we'll have an alphabet with over 60,000 symbols. (Treating symbols as 2-byte Unicodes, rather than a byte at a time, makes for better compression in the case of internationalized text.) And, note, there's nothing that limits the number of bits per code to at most 16. As you generalize the LZW algorithm for this very large alphabet, don't worry if you have some pretty long codes.

With this, give the compressed version of this four-symbol sequence, using our project assumptions, including an EOD code, and grouping into 4-byte ints. (These three symbols are Unicode values, represented numerically.) Write your answer as 3 8-digit hex values, space separated, using capital hex digits, not lowercase.

32767 32768 32767 32768

我遇到的问题是我不知道字母表的整个范围,所以在进行 LZW 压缩时我不知道新代码将具有什么字节值。由于这个问题,我也不知道 EOD 代码会是什么。

此外,在我看来,压缩数据只需要两个整数。

最佳答案

问题陈述格式错误。

在我们今天所知道的 Unicode 中,代码点(那些代表字符、字符的可组合部分和其他有用但更隐蔽的东西的数字)不能全部从 0 到 65535 编号以适应 16 位。 Unicode 中有超过 10 万个中文、日文和韩文字符。很明显,你需要 17+ 位才能满足这些需求。因此,Unicode 显然不是这里的正确选项。

OTOH,存在一种 Unicode 的“删节”版本,Universal Character Set ,其 UCS-2 编码使用 16 位代码点,技术上最多可用于 65536 个字符等。那些代码大于 65535 的字符是不吉利的,UCS-2 不能使用它们。

因此,如果它真的是 UCS-2,您可以下载它的规范(我相信是 ISO/IEC 10646)并找出使用了这 64K 中的哪些代码,因此应该构成您的初始 LZW 字母表。

关于c - 使用整个 unicode 库的 LZW 压缩,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14801866/

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