当前位置: 首页 > 面试题库 >

字节vs字节数组在Python 2.6和3中

邰钟展
2023-03-14
问题内容

我正在Python中测试bytesvs。bytearray我不明白某些差异的原因。

一个bytes迭代器返回的字符串:

for i in bytes(b"hi"):
    print(type(i))

给出:

<type 'str'>
<type 'str'>

但是bytearray迭代器返回ints:

for i in bytearray(b"hi"):
    print(type(i))

给出:

<type 'int'>
<type 'int'>

为什么会有所不同?

我想编写可以很好地转换为Python 3的代码。那么,Python 3中的情况是否相同?


问题答案:

在Python中,2.6html" target="_blank">字节只是str的别名
引入此“伪类型”是为了(部分地)准备要与Python 3.0转换/兼容的程序(和程序员!),在Python
3.0中语义有严格区别,并用于str(系统上为unicode)和byte(为数组)八位字节,用于存储数据,但不存储文本)

类似地,字符串文字的b前缀在2.6中无效,但是它在程序中是一个有用的标记,它明确标记程序员的意图是将字符串作为数据字符串而不是文本字符串。然后,当程序移植到Py3k时,此信息可由2to3转换器或类似的实用程序使用。



 类似资料:
  • 问题内容: 我试图理解一个到字符串,一个的字符串表示形式到转换…我将我的转换成一个要发送的字符串,然后我希望我的Web服务(用python编写)将数据直接回显给客户端。 当我从Java应用程序发送数据时… 字节发送.. 发送(这是Arrays.toString()的结果,它应该是我的字节数据的字符串表示形式,该数据将通过电线发送): 在python端,python服务器将字符串返回给调用方(我可以

  • 问题内容: 我是python3的新手,来自python2,并且我对unicode基本概念有些困惑。我读了一些不错的文章,使事情变得更加清楚,但是我看到python 3上有2种方法可以处理编码和解码,而且我不确定要使用哪种方法。 因此,Python 3中的想法是,每个字符串都是unicode,并且可以按字节进行编码和存储,或者可以再次解码回unicode字符串。 但是有两种方法可以做到: 会生成,但

  • 问题内容: 有人可以指出以下更有效的版本吗 每个变量都是一个字节片,大小不一 : 码: : 基准测试结果: 问题答案: 如果已经分配了内存,则x = append(x,a …)的序列在Go中非常有效。 在您的示例中,初始分配(制造)的成本可能比附加序列的成本高。这取决于字段的大小。考虑以下基准: 在我的盒子上,结果是: 系统地重新分配缓冲区(甚至是很小的缓冲区)会使此基准测试速度至少慢5倍。 因此

  • 为什么数组不相等?我希望返回原始的字节数组。

  • 我看到很多人都有类似的问题,但我还没有试图找到我要找的东西。 因此,我有一个方法读取输入图像并将其转换为字节数组: 这是因为BufferedImage img为空。我认为这与我最初从BufferedImage到字节数组的转换中,信息被更改/丢失,因此数据不能再被识别为JPG有关。 有人对如何解决这个有什么建议吗?不胜感激。

  • 我需要通过Java socket发送一个文本消息到服务器,然后发送一个字节数组,然后是一个字符串等等。到目前为止,我所开发的内容还在工作,但客户端只读取发送的第一个字符串。 从服务器端:我使用发送字节数组,使用发送字符串。 问题是客户机和服务器不同步,我的意思是服务器发送字符串然后字节数组然后字符串,而不等待客户机消耗每个需要的字节。 我的意思是情况不是这样的: