用二进制读取(读入char)含有中文的txt的时候会出现负数
用二进制读取(读入char)含有中文的txt的时候会出现负数。
中文肯定不存在在ascii里,但是为什么出现负数啊...
最主要的问题在这里:
我在做哈弗曼压缩算法的时候出现问题的时候出现的,如果有负数,那就对字符出现频率次数的统计有难度了。
因为数组的下标不能是负数
读出来的是 -68 -54 -...
都是负数,这就是说不能最含有中文的文件进行压缩了,只能够对只含有ascii字符的文件进行压缩0.......
高手救命啊
[解决办法]
用unsigned char 试试
[解决办法]
印象里中文编码是2个字节,第一个是负数以区别与一般字节,处理的时候就知道这个字节要和后面一个一起,所以lz用char读出来是负数才是对的。
至于数组大小……没算错的话,2^16 bytes == 64KB,不能接受么?
如果实在想要优化,有很多数据结构可选,字典树什么的