gpt4 book ai didi

python - 尽管输入类型看似正确,但 int(string, base=16) 的文字无效

转载 作者:行者123 更新时间:2023-12-01 02:19:03 25 4
gpt4 key购买 nike

我写了这个函数:

def hexToBinary(text):
print type(text), text, int("b", base=16), int("B", base=16) # Added this line for debugging
return '{:0{}b}'.format(int(text, base=16), len(text) * 4)

该函数返回:

<type 'str'> B 11 11
... Some Traceback
File "set1challenge6.py", line 41, in hexToBinary
return '{:0{}b}'.format(int(text, base=16), len(text) * 4)
ValueError: invalid literal for int() with base 16: '\x1dB'

鉴于 text 是一个字符串并包含 "B" 为什么 int("B", base=16) 返回 11 且int(text, base=16) 返回错误?

我应该寻找的最可能的错误是什么?

该函数本身应该是正确的,因为我已经使用它来解决了几个编程问题。我认为文本变量中可能有某些内容,但除了验证它是否是正确的类型之外,我不知道该怎么做。

最佳答案

您的文本中有一个额外的嵌入字符,其十六进制值为 1D。要删除它,请尝试以下操作:

代码:

import string

def filter_out_junk(text):
return ''.join(x for x in text if x in set(string.printable))

这将删除任何未考虑的内容 printable .

测试代码:

junk_string = '\x1dB'
print(int(filter_out_junk(junk_string), 16))
print(int(junk_string, 16))

结果:

11

ValueError: invalid literal for int() with base 16: '\x1dB'

关于python - 尽管输入类型看似正确,但 int(string, base=16) 的文字无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48122161/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com