bibichuan
deepin
2019-02-15 16:50 编解码是不是也有效率的考虑?不是很懂,认真思考了,值得尊敬。
Reply Like 0 View the author

https://bbs.deepin.org/post/174736
编解码是不是也有效率的考虑?不是很懂,认真思考了,值得尊敬。
https://bbs.deepin.org/post/174736
认真思考了,值得尊敬。
我比较外行,编码应该是对应查表吧,不压缩的话应该不能依赖上一个字符是 ...
https://bbs.deepin.org/post/174736
编码行不行还要看看大的环境,别人都是流行的编码,你弄个特立独行的交流起来很麻烦,这个是最大的麻烦 ...
https://bbs.deepin.org/post/174736
最好画一张图,不然看起来看不懂.
https://bbs.deepin.org/post/174736
按讲在合适的编码规则下,不需解码的一符号一码最好
https://bbs.deepin.org/post/174736
更新了2张图,如果还没明白,我再解释。
https://bbs.deepin.org/post/174736
存储和传输出错,应该是数据链路层和物理层解决的问题。
否则我们就要考虑万一CPU做加法的时候出错了并且 ...
已有第二版。
因为我觉得UTF-8编码仅仅对00000000-0000007F编码占用空间小。假如有大量连续字符在UCS-4编码当中的前三个字节都一样,那么使用UTF-8编码也会浪费至少一倍的空间。
简单介绍下我的编码方案:
编码最多占用5个字节:D4D3D2D1D0。
D4表示控制信息(b7b6b5b4b3b2b1b0)。b7永远为1,b3b2b1分别表示UCS-编码下当前字符跟前一个字符的前三个字节比较的结果,相同为0,不同为1;b0表示UCS-编码下当前字符跟前一个字符的最后一个字节的最高bit比较结果,相同为0,不同为1。b6b5b4未定义。
D3D2D1与当前字符UCS-4编码前三字节相同。
D0表示当前字符UCS-4编码的最后一个字节低7bit,最高bit永远为0。
若D4的b3b2b1b0全为0,则D4D3D2D1省略,只保留D0。
若D4的b3b2b1某一位为0,则对应字节省略。
D0不可省略,且最高bit永远为0。
文本文件或字符串开头默认前一个字符的UCS-4编码为00000000。
这种编码的优点:
如果UCS-4编码下当前字符与前一字符的前3字节相同,则编码仅占用1个字节。所以兼容ASCII编码。
缺点:
当前字符的编码要跟前一个字符的UCS-4编码比较。
我简单测试了一下,汉字、阿拉伯文字、韩文、俄文、日文,用这种编码跟UTF-8编码所占用空间差不多。但是泰文,比UTF-8小很多。
后缀“utfc”的文件就是经过此方案编码后的文件。“jieguo.ucs4”是解码“utfc”得到的文件。
自己写了个小程序用来编码和解码,没有优化,没有注释。
UTF-C.zip
“UTF-C”是我自己临时乱起的名字。
请各位指出这种编码方案的缺点和不足。
如果是小的不足,可以改进。如果是非常大的缺点,那就只能放弃了。
谢谢各位!
-----------------------------------------------------------------------------------
百科https://baike.baidu.com/item/Unicode/750500?fr=aladdin#11最下边编码当中的所有字保存为:
连续编码的汉字.zip
共6081个汉字。
我对外语不了解。如果有某种文字像ASCII码一样,编码集中在UCS-4最后一字节的0000~07FF或8000~FFFF内,此方案占用空间跟相同字符数量的纯ASCII文件相比,只多占用一字节。
----------------------------------------------------------------------------------
编码说明:
编码举例: