11

以下は、機能的な復号化および暗号化プログラムの一部であるコードのセクションです。

while checkvar < maxvar: # is set to < as maxvar is 1 to high for the index of var
    #output.append("%02d" % number)
    i =ord(var[checkvar]) - 64 # Gets postional value of i
    i = ("%02d" % i)
    if (checkvar + 1) < maxvar:
        j =ord(var[(checkvar + 1)]) - 64 # Gets postional value of i
        j = ("%02d" % j)
        i = str(i) + str(j) #'Adds' the string i and j to create a new i
    li.append(int(i))
    checkvar = checkvar + 2

print li

ご覧のとおり、2 つの変数 i と j は最初に文字列として扱われ、1 桁の数字の前に (文字列として) 0 が追加されます。次に、これらの変数を組み合わせて 4 桁の数字を作成します (文字列のままです)。プログラムの後半では、作成された数値がpow()関数で使用されintます。s は先頭のゼロを削除します。

私の質問: Python にints の先行ゼロを保持させることは可能ですか? 私はオンラインで検索を続けてきました。

編集

人々を助けるために、プログラムの暗号化部分を含めました。ここに問題があります。上記のコードで作成された変数は、pow()関数を介して渡されます。これは文字列を処理できないためint、先頭のゼロが失われた変数を s に変換する必要があります。

#a = li[]
b=int(17)#pulic = e
c=int(2773)#=n

lenli=int(len(li))
enchecker = int(0)

#encrpted list
enlist = []

while enchecker < lenli:
    en = pow(li[enchecker],b,c)#encrpyt the message can only handle int
    enlist.append(int(en))
    enchecker = enchecker + 1

print enlist
4

3 に答える 3

1

hhmmssArduinoからシリアルラインに出くわすような日付文字列を取得していました。

だから私が得たとしましょうs = "122041"; これはそうでしょう12:20:41、しかし9amそうでしょう090000

print "%d" % (s)9 は 8 進数ではなく、不正な文字であるため、このステートメントは実行時エラーを引き起こします。

この問題を解決するには:

print "%06d" % (int(s))

それが役立つことを願っています

于 2016-08-11T18:38:04.633 に答える