我需要一些帮助将字符串转换为二进制文件。我必须使用我自己的代码,而不是内置函数(除了我可以使用'ord'将字符转换为十进制)。
我遇到的问题是它似乎只将第一个字符转换为二进制字符,而不是字符串的所有字符。例如,如果你键入“hello”,它会将h转换为二进制而不是整个。
这是我到目前为止所拥有的
def convertFile():
myList = []
myList2 = []
flag = True
string = input("input a string: ")
for x in string:
x = ord(x)
myList.append(x)
print(myList)
for i in range(len(myList)):
for x in myList:
print(x)
quotient = x / 2
quotient = int(quotient)
print(quotient)
remainder = x % 2
remainder = int(remainder)
print(remainder)
myList2.append(remainder)
print(myList2)
if int(quotient) < 1:
pass
else:
x = quotient
myList2.reverse()
print ("" .join(map(str, myList2)))
convertFile()
答案 0 :(得分:1)
如果您只是想要“十六进制字符串”,可以使用以下代码段:
''.join( '%x' % ord(i) for i in input_string )
EG。 'hello'=&gt; '68656c6c6f',其中'h'=&gt; ascii表中的'68'。
答案 1 :(得分:0)
def dec2bin(decimal_value):
return magic_that_converts_a_decimal_to_binary(decimal_value)
ordinal_generator = (ord(letter) for letter in my_word) #generators are lazily evaluated
bins = [dec2bin(ordinal_value) for ordinal_value in ordinal_generator]
print bins
除此之外这是不好的
for x in myList:
...
x = whatever
因为一旦它再次进入顶部x,无论你设置x等于被抛出,x被分配列表中的下一个值