【问题标题】:a bytes-like object is required, not 'str' error in python需要一个类似字节的对象,而不是 python 中的“str”错误
【发布时间】:2021-02-17 01:00:11
【问题描述】:

我在写代码

image = Image.open(filename)    #opening the image
binary = bin(int(binascii.hexlify(message), 16))    #converting string into binary
binary = binary.append('1111111111111110')   #adding delimeter at the end 
binary = binary**.lstrip('0b')   #removing the starting ob of binary

............继续

由于第 2 行,我收到此错误

**binary = bin(int(binascii.hexlify(message), 16))

TypeError: 需要一个类似字节的对象,而不是 'str'

我不明白这个错误,似乎没有任何效果

【问题讨论】:

  • message 分配在哪里? hexlify 需要字节,而不是字符串。

标签: python python-3.x


【解决方案1】:

变量message 包含一个字符串,但它必须是一个字节序列。要将字符串编码为字节,您可以执行以下操作:

message.encode('utf-8')

【讨论】:

  • python 中的编码函数将字符串转换为十六进制(unicode)然后我应该删除 binascii.hexlify 因为 hexlify 也会将字符串转换为十六进制?
  • 取决于您要完成的工作。从函数签名的角度来看,hexlify 返回一个与其参数类型相同的值(它们都是bytes),因此您可以摆脱它。我的猜测是 encode 方法是你真正想要的,你可以摆脱hexlify,但我不知道最终目标是什么。
  • 乐于助人!请将我的答案标记为已接受,以便将来的人们知道它有效:)
  • 相信这对像我这样的其他初学者会有很大帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-16
  • 2017-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多