python中整洁的长整数表示

2024-04-18 04:11:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用Python编写简单的RSA解密例程(我对Python有点陌生),似乎找不到一种在代码中整齐地格式化长整数的方法。 整数的长度为2048位,如果写在一行上,则会向右扩展。在C语言中,这样的整数可以用一个字数组来表示,人们可以在一页纸上整洁地写出它。 我该如何用Python来实现这一点呢?我尝试了显而易见的解决方案:

modulus = 0xaaaaa\
bbbbb\
ccccc

这根本不管用。我发现唯一有用的是:

^{pr2}$

你能建议一个长整数的格式化方法吗?在

谢谢。在


Tags: 方法代码整数数组解决方案例程rsa建议
3条回答

怎么样:

modulus =( 0xaaaaaaaa << 64
         | 0xbbbbbbbb << 32
         | 0xcccccccc << 0 )

或者,如果不希望跟踪这些偏移,可以使用一个简单的助手:

^{pr2}$

创建自己的函数来解析字符串,并使用它来定义全局。在

SMODULUS = parse("""
    aaaab
    bbbbb
    ccccc
    """)

def myFunc(...):
    crypomath_and_stuff = SMODULUS | abc & etc
    ...

您可能可以绕过使其内联的问题,并避免使其成为全局的,但这取决于python解释器是否足够聪明,能够将常量的函数编译成JIT风格的预处理数据(还取决于python语言的语义是否允许这样的优化)。要亲自尝试,可以使用dis.dis(python反汇编程序)查看是否确实进行了优化(或者更有可能没有进行优化)。如果您根本不关心性能,或者这些是对使用parsed变量的函数的一次性调用,也可以将其内联。在

Python concatenates adjacent string literals以便您可以编写:

long('01234567'
     '89abcdef'
     '01234567'
     '89abcdef',
     16)

相关问题 更多 >