#1楼
您正在寻找:
ord()
#2楼
从这里 :
函数ord()将获取char的int值。 如果您想在玩完数字后再转换回去,可以使用chr()函数来解决。
>>> ord('a')
97
>>> chr(97)
'a'
>>> chr(ord('a') + 3)
'd'
>>>
在Python 2中,还有unichr
函数,返回其序数为unichr
参数的Unicode字符:
>>> unichr(97)
u'a'
>>> unichr(1234)
u'\u04d2'
在Python 3中,可以使用chr
代替unichr
。
#3楼
注意, ord()
本身不提供ASCII值; 它会以任何编码形式为您提供字符的数值。因此,如果您使用Latin-1,则ord('ä')
可以为228,如果您使用UTF-,则它可以引发TypeError
8。 如果您传递一个unicode,它甚至可以返回Unicode代码点:
>>> ord(u'あ')
12354
#4楼
公认的答案是正确的,但是如果您需要一次将一大堆ASCII字符转换为它们的ASCII代码,则有一种更聪明/更有效的方法。 而不是做:
for ch in mystr:
code = ord(ch)
或稍快:
for code in map(ord, mystr):
您将转换为直接迭代代码的Python本机类型。 在Python 3上,这很简单:
for code in mystr.encode('ascii'):
在Python 2.6 / 2.7上,它涉及的只是一点点,因为它没有Py3样式的bytes
对象( bytes
是str
的别名,按字符进行迭代),但是它们确实具有bytearray
:
# If mystr is definitely str, not unicode
for code in bytearray(mystr):
# If mystr could be either str or unicode
for code in bytearray(mystr, 'ascii'):
编码为按序本机迭代的类型意味着转换要快得多。 在Py2.7和Py3.5的本地测试中,使用map(ord, mystr)
迭代一个str
来获取其ASCII码的时间是len
10 str
两倍,而在Py2或mystr.encode('ascii')
上使用bytearray(mystr)
Py3上的mystr.encode('ascii')
,并且随着str
变长,为map(ord, mystr)
支付的乘数map(ord, mystr)
-7x。
唯一的缺点是转换是一次完成的,因此您的第一个结果可能要花一点时间,并且真正巨大的str
会具有相当大的临时bytes
/ bytearray
,但是除非这迫使您进行页面崩溃,否则这不是可能很重要。
#5楼
字符的ASCII值:
ch = input("Please enter Character : ")
print("The ASCII Value of %c = %d" %(ch, ord(ch)))
查找字符串中总字符的ASCII值
str1 = input("Please Enter your Own String : ")
for i in range(len(str1)):
print("The ASCII Value of Character %c = %d" %(str1[i], ord(str1[i])))
我们还可以使用chr()函数从给定的ASCII值中找到字符。 此函数接受ASCII值并返回给定ASCII值的字符。
从用户获取ASCII值
num = int(input("Enter ASCII value: "))
print(chr(num))
#6楼
要获取字符的ASCII码,可以使用ord()
函数。
这是示例代码:
value = input("Your value here: ")
list=[ord(ch) for ch in value]
print(list)
输出:
Your value here: qwerty
[113, 119, 101, 114, 116, 121]