我正在尝试制作一段将8位二进制字符串转换为十六进制的代码但是它似乎没有输出任何内容,我认为问题在于查找二进制文件中的字符,但我不确定。代码如下:
number = input("Enter your binary number: ")
if len(number) < 8:
for i in range(0,8-len(number)):
newnumber = "0"+number
number = newnumber
endnumber = ["",""]
result = ""
for i in range(2):
if i == 1:
startnumber = number[0:3]
else:
startnumber = number[4:7]
if startnumber == "0000":
result = result + "0"
elif startnumber == "0001":
result = result + "1"
elif startnumber == "0010":
result = result + "2"
elif startnumber == "0011":
result = result + "3"
elif startnumber == "0100":
result = result + "4"
elif startnumber == "0101":
result = result + "5"
elif startnumber == "0110":
result = result + "6"
elif startnumber == "0111":
result = result + "7"
elif startnumber == "1000":
result = result + "8"
elif startnumber == "1001":
result = result + "9"
elif startnumber == "1010":
result = result + "A"
elif startnumber == "1011":
result = result + "B"
elif startnumber == "1100":
result = result + "C"
elif startnumber == "1101":
result = result + "D"
elif startnumber == "1110":
result = result + "E"
elif startnumber == "1111":
result = result + "F"
print(result)
任何帮助将不胜感激,谢谢!
答案 0 :(得分:2)
问题在于你是如何切割字符串的。特别是startnumber = number[0:3]
和startnumber = number[4:7]
。
使用startnumber = number[0:4]
和startnumber = number[4:8]
。
startnumber = number[0:3]
为您提供number
中的前3个字符(即number[0]
,number[1]
和number[2]
)
例如:
> number = "00001111"
> startnumber = number[0:3]
> print(startnumber)
'000'
> startnumber = number[0:4]
> print(startnumber)
'0000'
> startnumber = number[4:8]
> print(startnumber)
'1111'
编辑:正如您的问题评论中所述,您对startnumber
的分配也存在问题。请注意,Python(和大多数编程语言)是零索引,这意味着迭代通常从0
开始,到n-1
结束。因此,range(2)
实际上从0
迭代到1
,不包括2
。
答案 1 :(得分:0)
这在很多层面都是错误的。
1)内置
int(number, 2)
2)如果你想手动完成
result = 0
for index, char in enumerate(number[::-1]):
if char == '1':
result += 2^index