许多语言具有仅处理“纯文本”而不是二进制的功能。这是否意味着只允许 ASCII 范围内的字符?
二进制只是一系列字节,它不是类似于纯文本,它只是一系列解释为字符的字节吗?那么,明文可以存储与二进制相同的数据格式/协议吗?
纯文本是人类可读的,而二进制文件通常是人类不可读的,因为它由可打印和不可打印的字符组成。
尝试使用文本编辑器(例如记事本或 vim)打开 jpeg 文件,您就会明白我的意思。
二进制文件通常以优化速度的方式构建,因为不需要解析。纯文本文件可以手动编辑,二进制文件不能。
“明文”可以有多种含义。
在这种情况下最有用的一个是它只是一个二进制文件,它以字节序列组织,特定的计算机系统可以将其转换为它认为是“文本”字符的有限集合。
第二个含义,有点相关,是一个限制,即所述系统应该将这些“文本字符”显示为人类可读的符号,作为可识别字母表的成员。通常,不成文的暗示是翻译机制是 ASCII。
第三个,甚至更严格的含义是,这个系统必须是一个“简单的”文本编辑器/查看器。通常暗示 ASCII 编码。但是,实际上,您(人类)阅读以某种时髦格式编码并由专有程序显示的文本与阅读 ASCII 编码文件的 VI 文本编辑器之间几乎没有区别。
在编程上下文中,您的编程环境(由 OS + 系统 API + 您的语言能力组成)定义了一组“文本”字符,以及一组它能够读取以转换为这些“文本”字符的编码。请注意,这不一定意味着 ASCII、英语或 8 位 - 例如,Perl 可以本机读取和使用完整的 Unicode“字符”集。
要回答您的具体问题,您绝对可以使用“字符”字符串来传输任意字节序列,但需要注意字符串终止约定必须适用。问题是已经存在的“处理字符数据”的功能可能没有任何有用的功能来处理您的二进制数据。
它通常意味着的一件事是,该语言可以随意将某些控制字符(例如值 10 或 13)解释为逻辑行终止符。换句话说,输出操作可能会自动在末尾附加这些字符,输入操作可能会从输入中删除它们(和/或终止读取)。
相比之下,宣传处理“二进制”数据的语言 I/O 操作通常会包含一个用于操作数据长度的输入参数,因为没有其他方法(除了读取文件末尾之外)知道何时已经完成了。
通常,它取决于语言/环境/功能。
二进制数据始终是:二进制。它未经修改就被转移。
“纯文本”模式可能意味着以下一项或多项:
技术上没什么。纯文本是二进制数据的一种形式。但是,主要区别在于值的存储方式。想想如何存储整数。在二进制数据中,它将使用二进制补码格式,可能占用 32 位空间。在文本格式中,数字将被存储为一系列 unicode 数字。因此,数字 50 将以二进制形式存储为 0x32(填充以占用 32 位),但以纯文本形式存储为“5”“0”。