将UTF-16字符串解码为ASCII

时间:2018-11-28 17:18:35

标签: python python-3.x

我有一个用C编写的程序,它将创建WCHAR(UTF-16)并将其发送到python脚本。它将收到为:

'63006400630064006300640063006400'

我想将其打印为:

cdcdcdcd

2 个答案:

答案 0 :(得分:0)

基本上,这里您要先将base-16编码的字节字符串解码为字节字符串,然后再从UTF-16 LE对其进行解码。

幸运的是,所有这些东西已经由标准库提供了,因此这本质上是一个单行代码:

def decode_base16_UTF16(s):
    import base64
    return base64.b16decode(s, True).decode('UTF-16LE')

答案 1 :(得分:0)

我不能保证这样做的性能,但是您可以像这样从十六进制字符串中获取字节对象:

data = bytes.fromhex("63006400630064006300640063006400")

您可以从那里像往常一样对其进行解码:

my_string = data.decode("utf-16le")

以下是fromhex的参考:https://docs.python.org/3/library/stdtypes.html#bytes.fromhex(实际上有许多基本数据类型的fromhex类方法)。