许多语言都有只处理“明文”而不是二进制的函数。这是否意味着只允许ASCII范围内的字符?
二进制只是一系列字节,它不是类似于明文,明文只是被解释为字符的一系列字节吗?那么,明文可以存储与二进制相同的数据格式/协议吗?
发布于 2009-09-16 11:12:59
它通常意味着语言可以自由地将某些控制字符解释为逻辑行终止符,例如值10或13。换句话说,输出操作可能会自动将这些字符附加到末尾,而输入操作可能会将它们从输入中剥离(和/或终止读取)。
相比之下,宣称处理“二进制”数据的语言I/O操作通常会包括一个输入参数,表示要操作的数据长度,因为没有其他方法(除了读取文件末尾之外)知道操作何时完成。
发布于 2009-09-16 11:06:56
纯文本是人类可读的,二进制文件通常是人类不可读的,因为它由可打印和不可打印的字符组成。
试着用文本编辑器(如记事本或vim)打开一个jpeg文件,你就会明白我的意思。
二进制文件通常是以优化速度的方式构造的,因为不需要解析。纯文本文件可以手动编辑,而二进制文件则不能。
发布于 2009-09-16 11:11:13
“明文”可以有多种含义。
在该上下文中最有用的一个是,它仅仅是以字节序列组织的二进制文件,特定的计算机系统可以将其转换成它认为的“文本”字符的有限集合。
在某种程度上相关的第二个含义是所述系统应将这些“文本字符”显示为人类可识别的字母表的成员的符号的限制。通常,不成文的含义是转换机制是ASCII。
第三个更具限制性的含义是,这个系统必须是一个“简单的”文本编辑器/查看器。通常意味着ASCII编码。但是,真的,在你,人类,阅读一些时髦格式的文本并由专有程序显示,与VI文本编辑器阅读ASCII编码的文件之间几乎没有区别。
在programming context中,您的编程环境(由OS +系统API+您的语言功能组成)定义了一组“文本”字符,以及一组它能够读取以转换为这些“文本”字符的编码。请注意,这不一定意味着ASCII、英语或8位-例如,Perl本身就可以读取和使用完整的Unicode“字符”集。
要回答您的特定问题,您绝对可以使用“字符”字符串来传输任意字节序列,但必须遵守字符串终止约定。问题是,已经存在的用于“处理字符数据”的函数可能没有任何有用的功能来处理二进制数据。
https://stackoverflow.com/questions/1434885
复制相似问题