【问题标题】:How to print 32 control characters in ascii in python?如何在 python 的 ascii 中打印 32 个控制字符?
【发布时间】:2020-10-19 17:26:48
【问题描述】:

ASCII 字符是从 0 到 127,但只有一些数字是可打印的字符。其中 32 个是控制字符,不可打印。有没有办法将任何字符分配给 32 个字符的十六进制值?这样我就可以打印所有 127 个字符。我不想要 UTF,因为每个字符需要 2 个字节。我想要从 0 到 255 的所有字符,每个字符一个字节。我打算将文件保存为 ANSI 格式。

顺便说一句,我正在用 Python 开发这个程序。

请多多指教。

Code

Text

【问题讨论】:

  • 欢迎来到 SO!请分享代码片段而不是快照

标签: python binary ascii computer-science ansi


【解决方案1】:

这是可能的。每个文本文件也是一个二进制文件。因此,所有字符,无论它们是否可打印,都由一个数字 [0..255] 表示。 如果您按字符读取文件,则始终可以使用ord(char) 检索该数字。

除了标准的 UTF-8 文本解释(Python 使用 UTF-8 作为内部表示),您可以使用自己的私有 MYASCII 表将序数转换为 想要的字符.

写入文件类似:假设您有一个“奇怪”字符'я',您可以将其位置的序数值写入您自己的MYASCII 表中,然后不写入该字符,而是将序数写入chr(num) 的文件。

这样您就可以定义自己的“编码”。也就是说,您将如何解释文本文件中的数字 [0 .. 255]。但是,您总是需要自己的 MYASCII 表来解释文件。对于任何没有该表的程序,例如任何外部文本编辑器,它都会显示为 ANSI 所在的位置。

【讨论】:

  • 我使用拉丁字符替换了 31 个可控字符,但是在以 ANSI 格式保存在文本编辑器上时。无法识别字符。有什么解决办法吗?
  • 我已经上传了保存字符后的代码和文本文件的截图。请检查一下。它已在上述问题中更新。
  • 我不想太难,但最好将您的代码发布为文本。这样我必须全部输入:-(
猜你喜欢
  • 2010-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-22
  • 2023-01-23
  • 1970-01-01
相关资源
最近更新 更多