python3 二进制转中文
大家讲道理
大家讲道理 2017-04-17 17:44:35
[Python讨论组]

关于二进制转中文的问题。

>>> name = '你好'
>>> name
'你好'
>>> bytes(name,'unicode_escape')
b'\\u4f60\\u597d'

现在我有一段二进制数据,想要转化成中文。

bytes_name = b'\x60\x4f\x7d\x59'

我尝试使用 bytes_name.decode('unicode_escape')去转化,得到结果'O}Y'`,
我应该怎样做才可以得到正确的结果你好
谢谢!

===========================================================================
谢谢大家,我已找到答案。
那个二进制数据bytes_name = b'\x60\x4f\x7d\x59'是用c语言写的另一个程序传送过来的数据。

根据大家的提示,我将b'\x60\x4f\x7d\x59'转化成b'\\u4f60\\u597d',然后再decode('unicode_escape')即可。

def parse_unicodestring(unicode_bytes,length):
    result_bytes = b''
    for i in range(0,length,2):
        a = hex(unicode_bytes[i])[2:].encode('unicode_escape') if len(hex(unicode_bytes[i])) == 4 else ('0'+hex(unicode_bytes[i])[2:]).encode('unicode_escape')
        b = hex(unicode_bytes[i+1])[2:].encode('unicode_escape') if len(hex(unicode_bytes[i+1])) == 4 else ('0'+hex(unicode_bytes[i+1])[2:]).encode('unicode_escape')
        result_bytes += b'\u'+b+a

    return result_bytes.decode('unicode_escape')
大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(2)
迷茫

你的二进制不对啊。。如下:

>>> name = '你好'
>>> name
'你好'
>>> name.encode()
b'\xe4\xbd\xa0\xe5\xa5\xbd'
>>> bname = name.encode()
>>> bname
b'\xe4\xbd\xa0\xe5\xa5\xbd'
>>> bname.decode()
'你好'
>>> 

天蓬老师

这是二进制么?

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号