什么是Python字节串?

发布于 2021-01-29 19:11:17

什么是Python字节串?

我所能找到的只是关于如何编码为字节串或如何解码为asciior的主题utf-8。我正在尝试了解它是如何工作的。在普通的ASCII字符串中,它是一个数组或字符列表,每个字符代表0到255之间的ASCII值,因此您才能知道数字代表的字符。在Unicode中,字符的8或16字节表示形式可以告诉您它是什么字符。

那么什么是字节串?Python如何知道哪些字符表示为什么?它是如何工作的?由于您可以打印甚至返回这些字符串,并且可以显示字符串表示形式,所以我不太了解…

好的,所以我的意思是 肯定会 在这里错过。有人告诉我这是一个 不可变 的字节序列,没有任何特殊的 解释

字节序列。好吧,我们说一个字节:
'a'.encode()return b'a'

很简单。为什么我可以阅读 a

说我得到的ASCII值 一个 ,这样做:
printf "%d" "'a"

返回 97 。好的,好的ASCII字符 a 的整数值。如果我们将 97
解释为ASCII,用C表示char,则得到字母a。很公平。如果将字节表示形式转换为位,我们将得到:

01100001

2 ^ 0 + 2 ^ 5 + 2 ^ 6 = 97 。凉。

那么为什么要'a'.encode()返回b'a'而不是01100001??
如果 没有 特定的 解释 ,它是否应该返回类似的内容b'01100001'
看起来 像它解释它像ASCII。

有人提到它正在调用__repr__字节串,因此以易于阅读的形式显示。但是,即使我这样做:

with open('testbytestring.txt', 'wb') as f:
    f.write(b'helloworld')

仍然helloworld以常规字符串的形式插入文件中,而不是以字节序列的形式插入…那么ASCII中的字节字符串是吗?

关注者
0
被浏览
36
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    Python 知道如何表示字节串。这才是重点。

    在几乎所有输出窗口中输出值97的字符时,都会得到字符“
    a”,但这不是实现的一部分;这只是一件事,在本地恰好是正确的。如果要编码,则不要使用字节串。如果使用字节串,则没有编码。

    关于.txt文件的文章表明您误解了正在发生的事情。您会看到,纯文本文件也没有编码。它们只是一系列字节。这些字节得到通过文本编辑器转换成字母,但不能保证
    所有 别人打开你的文件会看到同样的事情,你如果你外面流浪一套共同的ASCII字符。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看