python中的整洁长整数表示

python中的整洁长整数表示,python,rsa,long-integer,Python,Rsa,Long Integer,我正在用Python编写简单的RSA解密例程(我对Python有点陌生),似乎找不到一种方法在代码中整齐地格式化长整数。 整数长度为2048位,如果写在一行上,则扩展到最右边。在C语言中,这样的整数将由一个单词数组表示,人们可以在一页上整齐地写出这个数组。 我将如何在Python中执行此操作?我尝试了显而易见的解决方案: modulus = 0xaaaaa\ bbbbb\ ccccc 这根本不起作用。我发现唯一有用的是: smodulus = "\ aaaaa\ bbbbb\ ccccc" m

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

modulus = 0xaaaaa\
bbbbb\
ccccc
这根本不起作用。我发现唯一有用的是:

smodulus = "\
aaaaa\
bbbbb\
ccccc"
modulus = long(smodulus,16)
你能为长整数建议一种格式化方法吗


谢谢。

制作您自己的解析字符串的函数,并使用该函数定义全局字符串

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

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

modulus =( 0xaaaaaaaa << 64
         | 0xbbbbbbbb << 32
         | 0xcccccccc << 0 )
module=(0xaaaaPython,因此您可以编写:

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

您正在询问如何在源代码中表示2048位整数(作为字符串文字),是吗?是的。这是正确的。我问的是如何将长整数表示为一个文字,但要简洁。到目前为止,所有的答案都是我原来的字符串方法的变体。我认为没有办法将长整数分解为一个实际的整数形式。你能给出一个它在C中的外观示例吗?出于某种原因,我不能在注释中发布C代码。But它看起来像
无符号int
上的数组,每行有4或8个数字:
0x11112222,0x11112222,0x11112222,0x11112222,
long('01234567'
     '89abcdef'
     '01234567'
     '89abcdef',
     16)