当我在 Python 中打印这样的程序时:
x = b'francis'
Run Code Online (Sandbox Code Playgroud)
输出是b'francis'. 如果 bytes 位于0s 和1s 中,为什么它不打印出来?
你似乎从根本上感到困惑,以一种非常常见的方式。数据本身与其表示是一个不同的概念,即当您尝试print输出或以其他方式显示它时所看到的内容。可能有多种方式来表示相同的数据。这就像如果我写23(十进制)或0x17(十六进制)或0o27(八进制)或0b10111(二进制)或twenty-three(英语),我正在谈论相同的数字。
在Python以下的某个较低级别,一切都是字节,每个字节都由位组成;但说字节“在” s 和s 中是不正确的 - 就像说数字二十三“在”十进制数字(或十六进制、八进制或二进制数字,或在英文文本字符)。01
符号0和1只是我们在屏幕上绘制的图片,用于表示这些位的状态 - 如果我们选择单独表示它们的话。有时,我们选择更大的分组,并为不同的状态组合分配不同的符号。例如,我们可以将多个位解释为二进制的单个整数值;或者(使用 Unicode)我们可以进一步将该数字解释为“代码点”(其中大多数是文本字符;一些是控制字符或文本字符的一部分)。
Pythonbytes对象是“原始”字节序列的包装器。当你显示它时,Python使用一种表示形式,其中每个字节(8位的分组)对应一个或多个符号:对应整数值在三十二到一百二十六(含)之间的字节是(由于历史原因)使用单独的文本字符(遵循所谓的 ASCII 编码)表示,而其他则使用以\x数字的十六进制表示形式开头并后跟的四字符“转义序列”表示。
| 归档时间: |
|
| 查看次数: |
7320 次 |
| 最近记录: |