>
Python编程 Python编程 82398Pythonista

问一个大整数转换的问题

某因幡 2010-07-23
比如我收到了一个string,我想把它当作一个little edian的Bignum使用,怎么写呢?一般C语言的大数库都有从char数组如此读取大整数的函数,寻找类似的。总不能unpack("Q*")然后自己乘吧?

ps:能提供ruby版本更好。
0

查看更多有趣的豆瓣小组

回应 (3条) 只看楼主

  • Python的话你不必担心,Python的数值类型是无限长的……
  • 某因幡
    知道啊
    a = 'xxxxxxxxxxxxxxxxxxxxxxxxxooooooooooooooo'
    b = ????才能把a当作是以unsigned char*保存的大数?
  • westhood
    不知道是否符合你的需求

    def bignum2bytes(n):
    ....# convert to hex format, remove prefix and postfix
    ....h = hex(int(n))[2:-1]

    ....bytes = []
    ....x = []
    ....for i in reversed(h):
    ........x.append(i)
    ........if len(x) == 2:
    ............c = x[1] + x[0]
    ............bytes.append(chr(int(c,16)))
    ............x = []
    ....if x:
    ........bytes.append(chr(int(x[0],16)))
    ....return bytes

    bytes = bignum2bytes("1"*100)
    print bytes

    bignum = 0
    for i, b in enumerate(bytes):
    ....bignum += ord(b) * (256**i)
    print bignum

    头一回在豆瓣上贴代码,为啥行首的空格全被去掉了啊?
添加回应

Python编程的热门贴

推荐小组

值得一读

    豆瓣
    我们的精神角落
    免费下载 iOS / Android 版客户端