python - 如何将python 2.7中的字节数组转换为十进制字符串?
问题描述
我有以下字节数组
>>> string_ba
bytearray(b'4\x00/\t\xb5')
接下来的两行很容易转换为十六进制字符串:
hex_string = [chr(x).encode('hex') for x in string_ba]
hex_string = ''.join(hex_string)
那个回报
>>> hex_string.lower()
'34002f09b5'
这是预期的。(这是一个 RFID 卡签名)
我通过执行上述操作将其转换为十进制,然后在下一行从十六进制字符串转换为十进制字符串(用零填充)。我的字符串限制为 10 个字符,因此我不得不删除字符串中的前 2 个字符,以便能够将其转换为最多 10 个字符的十进制数。
dec_string = str(int(hex_string[2:], 16)).zfill(10)
>>> dec_string
'0003082677'
这是正确的,因为我使用在线转换器进行了测试(十六进制:002f09b5,十进制:3082677)问题是,如果有办法跳过从字节数组到十六进制字符串的转换,以获得十进制字符串。换句话说,直接从 bytearray 到 dec_string
这将在 Python 2.7.15 上运行。
>>> sys.version
'2.7.15rc1 (default, Apr 15 2018, 21:51:34) \n[GCC 7.3.0]'
我尝试从 bytearray 中删除第一个元素,然后将其直接转换为字符串并加入。但这并不能提供预期的结果。
string_ba = string_ba[1:]
test_string = [str(x) for x in string_ba]
test_dec_string = ''.join(test_string).zfill(10)
>>> test_dec_string
'0000479181'
重复这个问题有没有办法直接从字节数组到十进制字符串
解决方案
您可以使用 struct library 将 bytearray 转换为十进制。https://codereview.stackexchange.com/questions/142915/converting-a-bytearray-into-an-integer也许对你有帮助
推荐阅读
- c++ - 我的指针代码c ++中的分段错误(核心转储)
- c# - 通过 ILGenerator 调用带有谓词表达式的 LINQ
- c# - 将 linq 中的两个泛型类型与 sql 进行比较
- ruby-on-rails - 为什么我的模型参数被认为是未定义的局部变量?:
- heif - 如何在 Android P 中使用 heic 格式?
- javascript - 只需稍加调整即可从一个到另一个创建 JSON 对象
- html - 我的浏览器如何正确显示 html 中的特殊字符?
- android - Android 应用程序在其他设备上运行,但在三星 Galaxy s8 中没有
- php - 为什么条件不满足时查询仍然运行?
- jquery - 使用数据表 jquery 库中的服务器端添加按钮获取所选项目值