为了账号安全,请及时绑定邮箱和手机立即绑定

如何在字符串中添加十六进制字节?

如何在字符串中添加十六进制字节?

呼唤远方 2022-08-16 16:27:24
我有这个十六进制字节字符串,用空格分隔:byteString = "7E 00 0A 01 01 50 01 00 48 65 6C 6C 6F"如何以这种方式添加字节:01 + 01 + 50 + 01 + 00 + 48 + 65 + 6C + 6C + 6F = 247
查看完整描述

2 回答

?
MMTTMM

TA贡献1869条经验 获得超4个赞

考虑到您将十六进制序列作为str字节),您需要做的是:

  • 将序列拆分为较小的字符串,每个字符串表示一个字节(2个十六进制数字):“7E”,“00”,...

  • 将每个这样的字符串转换为与十六进制表示相对应的整数值(结果将是整数列表)

  • 添加所需的值(忽略 1st 3)

>>> byte_string = "7E 00 0A 01 01 50 01 00 48 65 6C 6C 6F"

>>>

>>> l = [int(i, 16) for i in byte_string.split(" ")]  # Split and conversion to int done in one step

>>> l

[126, 0, 10, 1, 1, 80, 1, 0, 72, 101, 108, 108, 111]

>>>

>>> [hex(i) for i in l]  # The hex representation of each element (for checking only)

['0x7e', '0x0', '0xa', '0x1', '0x1', '0x50', '0x1', '0x0', '0x48', '0x65', '0x6c', '0x6c', '0x6f']

>>>

>>> s = sum(l[3:])

>>>

>>> s

583

>>> hex(s)

'0x247'


查看完整回答
反对 回复 2022-08-16
?
猛跑小猪

TA贡献1858条经验 获得超8个赞

您需要分两部分解决这个问题 - 将字符串转换为数字列表,然后对列表求和。为此,您可以使用内置的bytearray.fromhex和sum函数:


byteString = "7E 00 0A 01 01 50 01 00 48 65 6C 6C 6F"

numberList = bytearray.fromhex(byteString)

total = sum(numberList)


查看完整回答
反对 回复 2022-08-16
  • 2 回答
  • 0 关注
  • 356 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号