Java Python中的toByteArray?

Java Python中的toByteArray?,java,python,python-2.7,Java,Python,Python 2.7,因为java中的字节范围是:最小值为-128,最大值为127(包括) java.math.BigInteger.toByteArray()返回一个字节数组,其中包含此BigInteger的两个补码表示形式。字节数组将采用大端字节顺序:最高有效字节位于第0个元素中 在Python2.7中如何实现这一点? 由于字节范围为0,使用and: 不幸的是,使用struct.pack/struct.unpack无法获得任意长度的字节数组如果我正确理解了您想要的内容,类似的方法可以实现这一目的 >>

因为java中的字节范围是:最小值为-128,最大值为127(包括)

java.math.BigInteger.toByteArray()
返回一个字节数组,其中包含此BigInteger的两个补码表示形式。字节数组将采用大端字节顺序:最高有效字节位于第0个元素中

在Python2.7中如何实现这一点? 由于字节范围为0,使用and:


不幸的是,使用
struct.pack
/
struct.unpack

无法获得任意长度的字节数组如果我正确理解了您想要的内容,类似的方法可以实现这一目的

>>> struct.unpack('2b', struct.pack('>h', 1000))
(3, -24)
>>> struct.unpack('4b', struct.pack('>I', 1000))
(0, 0, 3, -24)
>>> struct.unpack('8b', struct.pack('>Q', 1000))
(0, 0, 0, 0, 0, 0, 3, -24)
def doTheMagic(x):
l=[]
而x:
m=x%256
l、 如果m几乎正确,则追加(m)。有时会在其结果中添加额外的零字节。下面是一个更正确的解决方案:

def doTheMagic(x):
    l = []
    while x:
        m = x%256
        l.append(m if m <=127 else m-256)
        x /= 256
    return l[::-1]

x = 1000
l = doTheMagic(x)

print l
def到字节数组(num):
bytea=[]
n=num
而n:
bytea.append(n%256)
n/=256
n_字节=len(bytea)

如果2**(n_bytes*8-1),我想你不想用256进行多个除法运算?我对python是新手…我需要任何能提供与java的toByteArray相同功能的东西。顺便说一句,python没有“byte”类型。它有整数,大小不一。
list = [3, -24]
>>> struct.unpack('2b', struct.pack('>h', 1000))
(3, -24)
>>> struct.unpack('4b', struct.pack('>I', 1000))
(0, 0, 3, -24)
>>> struct.unpack('8b', struct.pack('>Q', 1000))
(0, 0, 0, 0, 0, 0, 3, -24)
def doTheMagic(x):
    l = []
    while x:
        m = x%256
        l.append(m if m <=127 else m-256)
        x /= 256
    return l[::-1]

x = 1000
l = doTheMagic(x)

print l
def to_byte_array(num):
    bytea = []
    n = num
    while n:
        bytea.append(n % 256)
        n //= 256
    n_bytes = len(bytea)
    if 2 ** (n_bytes * 8 - 1) <= num < 2 ** (n_bytes * 8):
        bytea.append(0)
    return bytearray(reversed(bytea))