2010-07-12 2 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 

하지만 내가 얻을 것은 패딩 산세 정수의 목록입니다.

모든 방향이나 제안을 이해하십시오.

많은 감사, 잭

편집 :

: 나는 조금 다르게 생각하고 정수 패딩하지 않는 계시를 학습 한 후, 그러나 그것은 아마도 더 설명하는 좋은 생각 일 것입니다

저는 책에서 기본적인 암호화 연습을하고 있습니다. 그것은 pseduocode의 목록을 통해 작동하도록 - 암호 문자열 1-127 및 메시지를 얻고, 바이너리로 변환하고, 0b를 제거하고, 0으로 채 웁니다. 그러나 그것은 내가 XOR없이 나머지를하기를 원한다! 나는 한 번에 멀리 한 줄이라도 있지만, (문제가 시작되는 곳) 지금이 온다했습니다

  • 각 이진 비트를 변환 암호화 된 문자열
  • 바이너리 7 비트 결과를 추가 수동 XOR 연산 &을 수행 정수로 메시지 문자와 키의
  • 는 이진 비트 &에 문자 그대로의 사실과 거짓을 변환이 두 비트에 XOR 연산을 수행하여 출력에 추가

XOR 작업을 사용하고 싶지만 두려워서 내가 무엇을해야하는지 배우지 않을 것입니다.

-j

+0

YMMD : D ....... – relet

+0

"패딩 된 정수"를 원할 때 실제로 필요한 것은 무엇입니까? 그런 번호를 어떻게 사용하고 있습니까? – Karmastan

+0

Karmastan : 저는 책에서 기본적인 암호화 작업을하고 있습니다. XOR 연산을 사용하는 대신, XOR없이 모든 것이 어떻게 작동하는지 가르쳐주기 위해 일련의 연속 코드 (psuedocode)를 통해 연습을 진행합니다. 따라서이 시점에서 pseduocode는 다음과 같이 읽습니다. - 메시지의 각 문자의 정수 ASCII 값 가져 오기 (완료) - 문자의 ascii 버전의 이진 값 가져 오기 및 "0b"제거 (완료) 그리고 여기가 문제입니다 시작 : - 7 자 길이를 확인하십시오 (필요한 경우 0으로 시작하는 패드) (완료) - 메시지 문자 및 키의 각 2 진 비트를 정수로 변환합니다 (문제) 고마워요! –

답변

9

정수에 패딩 아이디어를 적용하는 것은 의미가 없습니다. 문자열을 필요로하는 문자열을 인쇄/표현하려면 정수에 패딩이 없어야합니다.

+0

오, 그게 내가 틀렸어. 정수에는 패딩이 없습니다. 나는 어딘가에 그 맛있는 음식을 놓쳤을거야. 감사합니다. –

-1

INT 유형은 숫자이기 때문에 앞에 오는 0없이 저장됩니다. 왜 675를 00675로 저장하고 싶습니까? 그것은 정수의 영역에서 의미가 없습니다. 나는 정수로 정수를 저장 한 다음, 접근하여 인쇄 할 때만 패딩을 적용 할 것을 제안한다.

4

정수는 패딩 개념을 가지고 있지 않지만 원하는 경우 당신은 단지 값 대신 값과 원래 길이를 모두 저장할 수 있습니다 :

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

을 그럼 당신은 당신이 그렇게 할 충분한 정보가 원래의 데이터를 재구성하려는 경우. 터플을 사용하는 대신이 두 필드를 모두 저장하는 맞춤 클래스를 만들 수도 있습니다.

0

단지 데이터 표현에 대해 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