简体   繁体   English

Python十六进制字符串到整数转换错误

[英]Python hexadecimal string to integer conversion error

I'm trying to port this library from Javascript to Python, but keep getting a strange error in my attempt to convert a hexadecimal string to integer.我正在尝试将这个库从 Javascript 移植到 Python,但是在尝试将十六进制字符串转换为整数时不断遇到奇怪的错误。 It works fine for short strings, but for some reason chokes on larger ones:它适用于短字符串,但由于某些原因,较大的字符串会窒息:

ValueError: invalid literal for int() with base 16: '14fdbc5ade9e3d4097f421fe7b4b54ad05883d589c3b3f6648b5e0ea2b64b359158087b793b859a4c51af0fd8c1edb7a92b8d5843c1a2d659929357c7e1869784435d6dcfd8d29b619194333b38655493eb4eb3deeffbf339e91c7c0f6113b4bb6672f49' ValueError异常:对于int()与底座16无效文字: '14fdbc5ade9e3d4097f421fe7b4b54ad05883d589c3b3f6648b5e0ea2b64b359158087b793b859a4c51af0fd8c1edb7a92b8d5843c1a2d659929357c7e1869784435d6dcfd8d29b619194333b38655493eb4eb3deeffbf339e91c7c0f6113b4bb6672f49'

The code looks like this:代码如下所示:

def stretch(value):
    hexadecimal = hex(value)[2:]
    buffer = hexadecimal
    while True:
        buffer += record_separator + hexadecimal
        if len(buffer) >= minimum_digits:
            break
    return int(buffer, 16)

Python 3 has no limit on it's integer values. Python 3 对其整数值没有限制。

So you can use int(hex_string, 16) to convert even large strings to an integer value.因此,您可以使用 int(hex_string, 16) 将甚至大的字符串转换为整数值。

s = '14fdbc5ade9e3d4097f421fe7b4b54ad05883d589c3b3f6648b5e0ea2b64b359158087b793b859a4c51af0fd8c1edb7a92b8d5843c1a2d659929357c7e1869784435d6dcfd8d29b619194333b38655493eb4eb3deeffbf339e91c7c0f6113b4bb6672f49'

s_int = int(s, 16)

print(s_int)

Result结果

546755182137531943293891170863886409257177002102958031106970218913938945216495276608761007929774380907079475078176395384371438944791022503587328767282546555465705414556027853888426781796298321719051075009856267471199860627126795651319803721

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM