如何获取字符的 ASCII 值

2024-12-23 08:43:00
admin
原创
151
摘要:问题描述:如何在 Python 中获取字符的ASCIIint值?解决方案 1:从这里:该函数ord()获取字符的 int 值。如果您在玩完数字后想要转换回来,该函数chr()可以帮您搞定。>>> ord('a') 97 >>> chr(97) 'a' >>>...

问题描述:

如何在 Python 中获取字符的ASCIIint值?


解决方案 1:

从这里:

该函数ord()获取字符的 int 值。如果您在玩完数字后想要转换回来,该函数chr()可以帮您搞定。

>>> ord('a')
97
>>> chr(97)
'a'
>>> chr(ord('a') + 3)
'd'
>>>

在 Python 2 中,还有一个unichr函数,返回以参数为序数的Unicodeunichr字符:

>>> unichr(97)
u'a'
>>> unichr(1234)
u'/u04d2'

在 Python 3 中,您可以使用chr而不是unichr


ord() - Python 3.6.5rc1 文档

ord() - Python 2.7.14 文档

解决方案 2:

请注意,它ord()本身并不提供 ASCII 值;它提供字符的数值(无论该字符采用何种编码)。因此,ord('ä')如果您使用的是 Latin-1,则的结果可能是 228,TypeError如果您使用的是 UTF-8,则可能会引发。如果您向它传递一个 unicode,它甚至可以返回 Unicode 代码点:

>>> ord(u'あ')
12354

解决方案 3:

您正在寻找:

ord()

解决方案 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 的本地测试中,str使用迭代 a 来获取其 ASCII 码所map(ord, mystr)花的时间大约是 Py2 或 Py3 上 10 的两倍,并且随着时间的len流逝,支付的乘数上升到 ~6.5x-7x。str`bytearray(mystr)mystr.encode('ascii')str`map(ord, mystr)

唯一的缺点是转换是一次性完成的,因此您的第一个结果可能需要更长的时间,并且真正巨大的结果str将具有相应较大的临时bytes/ bytearray,但除非这迫使您进行页面抖动,否则这可能并不重要。

解决方案 5:

要获取字符的 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]

解决方案 6:

您想找出字符的 ASCII 值。现在我提供字符的 ASCII 值的代码:

Python 中的代码模式: ord(character)

Python 代码示例: ord('A')
输出:
在此处输入图片描述

我提供了将 ASCII 值转换为字符的代码:

Python 中的代码模式: chr(ASCII value)

Python 代码示例: chr(66)

输出:
在此处输入图片描述

解决方案 7:

Numpy 还可用于获取字符的 ascii 值。如果您需要将大量字符转换为其 ascii/unicode 代码点,它特别有用。根据字符的数量,它可能比ord循环调用快几个数量级。

要使用它,请将字符串/字符包装在 numpy 数组中并将其视为int,它将返回字符在其所处的编码中对应的数值。

import numpy as np

# if the characters are in a list
lst = ['a', 'ä', 'あ']
ary = np.array(lst).view(int).tolist()   # [97, 228, 12354]


# if the characters are in a string
s = 'abc'
ar = np.array([s])
v = s_arr.view(int)                      # array([97, 98, 99])

附注:视图的一个特点是,如果您更改视图,原始视图也会更改。例如,如果我们想将所有字符都设为ar大写,我们可以这样做v

v -= 32
print(ar)   # ['ABC']
相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   1565  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1354  
  信创国产芯片作为信息技术创新的核心领域,对于推动国家自主可控生态建设具有至关重要的意义。在全球科技竞争日益激烈的背景下,实现信息技术的自主可控,摆脱对国外技术的依赖,已成为保障国家信息安全和产业可持续发展的关键。国产芯片作为信创产业的基石,其发展水平直接影响着整个信创生态的构建与完善。通过不断提升国产芯片的技术实力、产...
国产信创系统   21  
  信创生态建设旨在实现信息技术领域的自主创新和安全可控,涵盖了从硬件到软件的全产业链。随着数字化转型的加速,信创生态建设的重要性日益凸显,它不仅关乎国家的信息安全,更是推动产业升级和经济高质量发展的关键力量。然而,在推进信创生态建设的过程中,面临着诸多复杂且严峻的挑战,需要深入剖析并寻找切实可行的解决方案。技术创新难题技...
信创操作系统   27  
  信创产业作为国家信息技术创新发展的重要领域,对于保障国家信息安全、推动产业升级具有关键意义。而国产芯片作为信创产业的核心基石,其研发进展备受关注。在信创国产芯片的研发征程中,面临着诸多复杂且艰巨的难点,这些难点犹如一道道关卡,阻碍着国产芯片的快速发展。然而,科研人员和相关企业并未退缩,积极探索并提出了一系列切实可行的解...
国产化替代产品目录   28  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用