2011-04-13 198 views
3

我必须说这是因为我是一个新手(学习),所以请放弃显而易见的遗漏,尊重一个对你的世界有限的人(Python) 。使用ord()转换字符串为ascii

我的目标是从用户获取字符串并将其转换为十六进制和ASCII字符串。我用hex(encode("hex"))成功完成了这个任务,但是ascii没有。我找到了ord()方法并尝试使用该方法,如果我只使用:print ord(i),则循环遍历并将值垂直打印到屏幕上,而不是我想要的那些值。所以,我试图用一个字符串数组捕获它们,这样我就可以将它们连接到一行字符串,并在'Hex'值下水平打印它们。我已经用尽了我的资源来解决这个问题......任何帮助都是感激。谢谢!

while True: 
    stringName = raw_input("Convert string to hex & ascii(type stop to quit): ") 
    if stringName == 'stop': 
     break 
    else: 
     convertedVal = stringName.encode("hex") 
     new_list = [] 
     convertedVal.strip() #converts string into char 
     for i in convertedVal: 
     new_list = ord(i) 


     print "Hex value: " + convertedVal 
     print "Ascii value: " + new_list  
+1

你期待你的ASCII输出看起来像什么?逗号分隔的十进制值?即:“97,98,65,65” – yan 2011-04-13 21:04:44

+0

如果用户输入字符串:'123431':hex = 313233343331 ascii = 49 50 51 52 51 49 – suffa 2011-04-13 23:31:07

+0

谢谢DP ....此外,我并不是故意最后一条评论的ascii值之间的空格。 – suffa 2011-04-13 23:38:36

回答

6

这是你在找什么?

while True: 
    stringName = raw_input("Convert string to hex & ascii(type stop to quit): ").strip() 
    if stringName == 'stop': 
     break 

    print "Hex value: ", stringName.encode('hex') 
    print "ASCII value: ", ', '.join(str(ord(c)) for c in stringName) 
+0

是的!我的代码与之前的代码几乎完全相同,但切换了!为什么在stringName ...行上使用.strip()?再次,谢谢! – suffa 2011-04-13 23:45:07

3

像这样的事情?

def convert_to_ascii(text): 
    return " ".join(str(ord(char)) for char in text) 

这给你

>>> convert_to_ascii("hello") 
'104 101 108 108 111' 
1
print "ASCII value: ", ", ".join(str(i) for i in new_list) 
相关问题