0

我正在使用 PyPy 在 RPython 中制作虚拟机。我的问题是,我将每个字符转换为数字表示。例如,转换字母“a”提供了这个结果,97。然后我将 97 转换为十六进制,所以我得到:0x61。

例如,我试图将字母“á”转换为十六进制表示,应该是:0xe1 但我得到的是 0xc3 0xa1

我需要使用特定的编码吗?目前我正在使用 UTF-8。

- 更新 -

instr 在哪里"á",(包括引号)

for char in instr:
    char = str(int(ord(char)))
    char = hex(int(char))
    char = char[2:]
    print char # Prints 22 C3 A1 22, 22 is each of the quotes
    # The desired output is 22 E1 22
4

2 回答 2

0
#!/usr/bin/env python
# -*- coding: latin-1 -*-

char = 'á'

print str(int(ord(char)))
print hex(int(char))
print char.decode('latin-1')

给我:

225
0xe1
0xe1
于 2014-04-24T14:23:49.023 回答
0

您使用的是 Python 语言版本 2,因此您的 string:"á"是一个字节字符串,其内容取决于源文件的编码。如果编码是 UTF-8,它们是C3 A1- 字符串包含两个字节。

如果要将其转换为 Unicode 代码点(也称为字符)或 UTF-16 代码点(取决于您的 Python 安装),请将其转换为unicode第一个,例如使用.decode('utf-8').

# -*- encoding: utf-8 -*-

def stuff(instr):
  for char in instr:
    char = str(int(ord(char)))
    char = hex(int(char))
    # I'd replace those two lines above with char = hex(ord(char))
    char = char[2:]
    print char 

stuff("á")
print("-------")
stuff(u"á")

输出:

c3
a1
-------
e1
于 2014-04-26T19:24:54.990 回答