将字符串转换为二进制

时间:2014-03-31 22:42:37

标签: python string-conversion

我需要一些帮助将字符串转换为二进制文件。我必须使用我自己的代码,而不是内置函数(除了我可以使用'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()

2 个答案:

答案 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被分配列表中的下一个值