首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >单字节字符代码

单字节字符代码
EN

Stack Overflow用户
提问于 2013-11-24 14:16:36
回答 2查看 1K关注 0票数 0

我正在尝试实现一个压缩算法,为此我需要有一个单字节字符代码数组-它们必须是单字节的。我不熟悉如何在编程中处理字符代码,但要求它们应该是单字节的,并且不依赖于操作系统/机器。是不是像整数值0到255一样简单?

我使用了以下小代码片段来查看如果是这样的话,我可以使用哪些字符:

代码语言:javascript
复制
for (int i = 0; i < 256; i++) {
    std::cout << (char)i << std::endl;
}

似乎许多第一个数字都是看不见的空白字符,而最后一组数字都显示为?

编辑:

更具体地说,我正在尝试实现与此paper类似的算法。它将DNA序列分割成4个片段,并使用哈希表对其进行转换,例如,AAAA转换为由单字节字符编码的字符,AAAT转换为单字节字符。对于DNA来说,1字节中的4字节是非常好的压缩(尽管如果我想将字母表从A、T、C、G扩展到A、T、C、G、N和-,我将需要6^4个字符,而不是4个字母表所需的256个字符。我可以将压缩从4比1减少到3比1,并且只需要216个单字节字符代码。

这种压缩是我试图写的东西的一部分,它应该从可能非常非常大的多个序列对齐(6个字母表A,T,C,G,N和-的序列/字符串)中读取序列。删除所有对我的分析程序没有意义的东西。我计划这样做:尽可能地压缩序列,然后在压缩的表示中找到没有信息的东西,然后展开剩余的东西,然后进行第二次扫描,去掉未压缩的表示中的剩余的无信息的东西,然后再次压缩剩余的信息,为分析程序做准备。

也许有比哈希方案更好的方案,我听说过一种叫做基于引用的方案,我需要去读一读。我还认为,一旦DNA字符串被压缩成256个单字节的格式,用来压缩普通文本的方法还能进一步压缩吗?

EN

回答 2

Stack Overflow用户

发布于 2013-11-24 14:20:55

为什么您会看到此输出

一些ASCII codes是不可打印的。使用isprint()检查字符是否可打印。

同样值得注意的是,您的shell使用的是什么编码。现代设置使用UTF-8,因此如果您尝试打印扩展ASCII码,当输出到终端时,它们可能被(错误地)解释为multibyte UTF-8 sequences,而不是ASCII码。

应该如何处理二进制数据

如果您使用的是对二进制数据进行操作的算法,比如压缩,那么最好完全忽略字符编码。避免在终端中将数据解释为字符串,并将其视为0-255的整数序列。通过管道将数据导入hexdump或在调试时打印每个字节的整数值。

票数 1
EN

Stack Overflow用户

发布于 2013-11-24 14:24:45

有多个字符集。如果你想要单字节-guaranteed单字节-那么你需要ASCII码字符集。如果您想支持非英语语言,可以使用特定的代码页,但您必须决定使用哪种语言。

还要注意,您可以使用char (8位,有符号)和byte (8位,无符号)进行计算。

以下是字符及其解释的列表:http://en.wikipedia.org/wiki/ASCII

字符集绝对依赖于操作系统。我建议您使用UTF-8,并且知道-大多数情况下-您将获得单字符字节。

附注:如果你在压缩文件,为什么你会关心呢?逐字节(或逐字符)读取文件并在另一端重新生成相同的字节/字符肯定是可行的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20171748

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档