You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为十六进制编码字符串正确编写‘if in’判断语句?

解决TypeError: bytes-like object is required, not 'str'问题

咱们来一步步拆解你的问题哈:

首先看报错信息TypeError: a bytes-like object is required, not 'str',根源是类型不匹配:

  • codecs.encode(b'hello', 'hex_codec')执行后返回的是bytes对象(比如b'68656c6c6f')
  • 你判断的时候用的是字符串"t",Python不允许直接在bytes类型里查找字符串类型的内容,这就触发了错误。

另外你的代码还有两个小坑:

  1. 你写的是if "t" in pkts1:,这里的"t"是字符串字面量,而你实际要检查的是变量t的值,得去掉引号;
  2. 变量t的值写错了——"hello"的十六进制编码是68656c6c6f,你写成了68656c6c6df(多了个d),就算类型问题解决了也匹配不上。

修正后的代码

import codecs
t = '68656c6c6f'  # 修正正确的十六进制值
pkts1 = codecs.encode(b'hello', 'hex_codec')

# 方案1:把bytes转成字符串再判断
if t in pkts1.decode('utf-8'):
    print('success')

# 或者方案2:把字符串t转成bytes再判断
# if t.encode('utf-8') in pkts1:
#     print('success')

关键修改点说明

  • 修正了t的十六进制值,确保和"hello"的编码结果一致;
  • 要么把pkts1(bytes类型)用decode('utf-8')转成字符串,要么把t(字符串类型)用encode('utf-8')转成bytes,保证两边类型统一;
  • 把判断条件里的"t"改成变量t,这样才是检查你定义的变量值是否存在。

运行修正后的代码就能正常输出success啦~

内容的提问来源于stack exchange,提问作者Keondre

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 07:53:04