2010-07-12 23 views
3

我在 Python: Nicest way to pad zeroes to string (4) 後面是一個很好的例子,但現在我需要將填充字符串轉換爲填充整數。如何在保留填充的同時將填充的字符串轉換爲整數?

我想:

list_padded=['0001101', '1100101', '0011011', '0011011', '1101111', 
     '0000001', '1110111', 1101111', '0111001', '0011011', 
     '0011001'] # My padded sting list. 

    int_list=[int(x) for x in list_padded] # convert the string to an INT 

但我得到的是SANS填充整數列表。

欣賞任何方向或建議。

非常感謝, 傑克

編輯:得知整數沒有得到補齊啓示後,我想有點不同,但它很可能是一個好主意的人進一步解釋:

我正在通過一本書中的基本加密練習。它給了我一個pseduocode的列表來處理 - 獲取密碼字符串1-127和一條消息,將兩者都轉換爲二進制,去掉0b,並填充零。但是,它希望我在沒有XOR的情況下執行其餘的操作!我已經得到了在同一時間,遠遠一條線,但現在我有這個(問題開始的地方):

  • 執行手動XOR運算& 7位的二進制位結果附加到加密的字符串
  • 轉換每個二進制位信息字符和鍵的整數
  • 上這兩個比特執行XOR操作
  • 轉換字面真假二進制比特&追加到輸出

我很喜歡使用XOR操作,但我害怕這樣做,我不會去了解我需要的。

-J

+0

YMMD:D ....... – relet 2010-07-12 21:05:21

+0

當你說你想要一個「填充整數」,你真的需要什麼?你怎麼使用這樣的號碼? – Karmastan 2010-07-12 21:08:44

+0

Karmastan:我正在通過一本書中的基本加密工作。這個練習不是使用XOR操作,而是通過一系列僞代碼來教導我如何在沒有XOR的情況下運行。所以在這一點上pseduocode寫着: - 獲取每個字符的整數ASCII值在消息(完成) - 獲取字符的ASCII版本的二進制值,並去掉「0B」(完成) 這是哪裏出了問題開始: - 檢查長度爲7個字符(必要時填充以零開始)(完成) - 將消息字符和密鑰的每個二進制位轉換爲整數(問題) 謝謝! – 2010-07-12 21:38:04

回答

9

將填充的想法應用於整數是沒有意義的。如果你想打印/表示他們你需要字符串,整數只是沒有填充。

+0

ohhhh這就是我錯了的地方。整數沒有填充。我一定是錯過了那個珍聞。 謝謝! – 2010-07-12 21:08:17

-1

由於INT類型是一個數字,它將被存儲而沒有前導零。你爲什麼要將675存儲爲00675?這在整數領域是毫無意義的。我建議將整數存儲爲整數,然後在訪問它們並將其打印出來時(或者您正在使用它們進行打印),僅應用填充。

4

整數沒有填充的概念,但如果您想要如果你想重建原始數據,你有足夠的信息,這樣做

int_list = [(int(x), len(x)) for x in list_padded] 

然後:你可以同時存儲值和原來的長度,而不是僅僅的價值。您甚至可能希望創建自定義類來存儲這些字段而不是使用元組。

0

前導零的只是數據表示:

"{0:b}".format(4).zfill(8) 

可以更改XOR與其他位運算:

def xor(x, y): 
    return (~x & y) | (~y & x) 

def bool_xor(x, y): 
    return ((not x) and y) or ((not y) and x) 

其實,你可以表達所有位操作只用一個邏輯運算: http://en.wikipedia.org/wiki/Functional_completeness