java数组base64编码_将base64编码的字节数组解码为(负)十进制值(Java到Python)...

本文介绍如何在Python中处理Base64编码的数据,包括如何将Base64字符串转换为字节并解析其数值。特别关注了高位位被设置时数值的正确处理方式,并提供了Python2和Python3的具体实现代码。
摘要由CSDN通过智能技术生成

在base64中解码时,'/bfbKNk='给出以下5个字节:0xfd 0xb7 0xdb 0x28 0xd9。在Python中,您只需获取0xfdb7db28d9的数值,它实际上是十进制的1089711319257。在

但是,当高位位被设置时,BigInteger类以2的补码表示法将其处理为负数,例如0xfdb7db28d9-0x1000000000=-9800308519

另外,Python没有Java BigInteger的等价物来自动处理负值,所以要模拟Java处理,必须控制是否设置了高位,如果设置了,则手动取两者的补码值。在

Python 2代码可以是:coded_string = "/bfbKNk="

bytes_val = base64.decodestring(coded_string)

bval = "".join("{0:08b}".format(ord(c)) for c in bytes_val)

intval = int(bval, 2)

if ord(bytes_val[0]) & 0x70 != 0: # manually takes the two's complement

intval -= int('1' + '00' * len(bytes_val), 16)

print intval

实际上是打印出来的

^{pr2}$

如果您喜欢使用Python3,代码可以变成:

^{3}$

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值