2011-08-18 6 views
0

나는 이진 내가 그것의 앞에 0000이 숫자를 변환 할 때마다이 인쇄 나던 때문에 내 모든 변환 부분이 긴 미친 듯이이다진수 계산기 도움말 - 파이썬

## The Input part 

l = raw_input('Input 8-bit number: ') 
j = list(l) 

## Value Error part 

t = [int(x) for x in j] 
if len(t) != 8 or len([n for n in t if n not in (1, 0)]) != 0: 
    raise ValueError('NOT 1 OR 0, or NOT CORRECT LENGTH') 


## The Conversion part 

a = l[0] 
b = l[1] 
c = l[2] 
d = l[3] 
e = l[4] 
f = l[5] 
g = l[6] 
h = l[7] 

p = a+b+c+d 
q = e+f+g+h 

y = hex(int(p, 2))[2:] 
z = hex(int(q, 2))[2:] 

## The Results part 

print 
print 'Results' 
print 'Binary: ',l 
print 'Hex: ',y+z 

16 진수로 변환이 코드가 0과 내가 그것을 인쇄 할 필요가 거기에 긴 과정을하지 않고 이렇게하는 방법입니다

+0

모든 숙제는 숙제로 표시하십시오. – agf

+0

Smartass 응답은'from binascii import hexlify'입니다. 네 숙제를 채점했다면 엄청난 점수가 남을거야. – Kimvais

+0

@Jonathan M의 답변처럼 내장 함수가 있습니다. 그리고'a = l [0], b = l [1]'을 사용하는 것은 좋지 않습니다. 그냥 l [0], l [1]을 사용하거나 for 루프를 사용하십시오. 어쨌든, 'a, b, c, d, e, f, g, h = 1'은 8 개의 과제를 대체 할 수 있습니다. 그리고 다음과 같이 10 행을 대체 할 수 있습니다 :'p = sum (map (int, l [: 4])); q = 합계 (map (int, l [4 :]))'. – utdemir

답변

2

내가 제대로 이해하면, 당신은에서 입수되는 2 자리 16 진수를 인쇄 할 이진 입력 l. 다음과 같이 할 수 있습니다 :

print 'Hex: ', hex(int(l, 2))[2:].zfill(2) 
+0

X의 없애 좋은 방법은 없습니까? 그것은 나를 위해 예를 들어 준다 0xf – jimbob

+0

Woops, 맞아. 편집 됨. – Clueless

+0

네, 정말 고맙습니다. – jimbob

1

그 코딩을 건너 뛰십시오.

첫째, hex() 시도 : http://docs.python.org/library/functions.html#hex

을 그리고, format() 체크 아웃 : http://docs.python.org/library/functions.html#format

+2

+1. 바이트 대신 정수 대신 16 진수 문자열로 변환하는 경우 base64.b16encode 및 base64.b16decode를 사용할 수도 있습니다. – ojrac

+0

그것은 분명히 숙제입니다. 그는 실제로 그것을 구현해야합니다. – agf

+0

아, 네, 거기에 숙제가 있습니다. 좋은 눈 ... 오 ... 잠깐 ... 당신이 거기에 넣었습니다. 웃음! –

0
print "%02x" % int(raw_input("Enter a number in binary: "), 2)