Python 官网:https://www.python/


  • Free:大咖免费“圣经”教程《 python 完全自学教程》,不仅仅是基础那么简单……

  • My CSDN主页、My HOT博、My Python 学习个人备忘录
  • 好文力荐、 老齐教室

  自学并不是什么神秘的东西,一个人一辈子自学的时间总是比在学校学习的时间长,没有老师的时候总是比有老师的时候多。
            —— 华罗庚




十六进制字符串转
Python代码
(utf-8字符串转十六进制字符串)


目 录

  • 1、试炼代码
  • 2、十六进制字符串转utf-8代码函数
  • 3、Python代码转十六进制字符串函数
  • 4、试炼完整Python代码
  • 5、代码运行效果
  • 6、十六进制字符串转换值得注意的地方

  在QQ“Python学习群”看到一条提问“如何把十六进制代码转换为原始文件呢”?刚好我前面“研究”一行装逼代码学到了一点相关技巧(可以点击蓝色文字查看详情),在此记录个笔记,“抛砖引玉”🤪🤪

QQ提问截屏图片


回页首

  正好今天在另一个Python学习群里“聒噪”,回答了一个小问题,有一段现成的Python代码:

小题目提问截屏图

解题Python代码

from random import choices # 加载random.choices()方法。

nums = range(1, 11) # 定义1~10的一维数组。
print(f"\n数组 {list(nums)} 长度:{len(nums)}") # 打印数组长度。
new_nums = choices(nums, k=3) # 随机从1~10中选取三个元素的新数组。
print(f"\n取数组 nums 随机三个元素求和:\n随机数组:{new_nums},求和sum:{sum(new_nums)}")

run代码效果截屏图片


回页首

  就拿那段解小题的Python代码开刀试炼:先写个Python代码转十六进制字符串的函数,再写个将十六进制字符串的字符串转utf-8代码的函数。两个函数的语句都作了很详细的注释,这里就不再罗嗦了。“造好”这两个函数,就可以方便地进行“操刀”了。😁

Python代码转十六进制字符串函数


def to_hex(string):
    ''' 字符串转十六进制 '''
    hex_string = [] # 初始化转换后的十六进制字符列表。

    for i in string: # 遍历字符串。
        hex_string.append(hex(ord(i))[2:].zfill(4).upper()) # 用“切片”[:3]方式截取转换后的十六进制字符串除十六进制标识字符外的字符串。由于有的中文字符需四位十六进制字符表示,所以用str.zfill(4)设置成每个字符四位十六进制字符(不足四位前置0)。为了好看,我用str.upper()方法转小写字母为大写。

    return ''.join(hex_string) # 返回“无缝链接”后的十六进制字符串。


回页首

十六进制字符串转utf-8代码函数


def hex_to_chr(hex_string):
    ''' 十六进制字符转utf-8字符串 '''
    chars = [] # 初始化转换后的utf-8字符串列表。

    for i in zip(*[iter(hex_string)]*4):   # 遍历十六进制字符串截取的四位十六进制字符元组。十六进制四位字符截取,用zip()、iter()配合*(星号)实现。
        chars.append(chr(int(''.join(i), 16))) # 无缝拼接四个十六进制字符串,用int(hex_string, 16)内置函数转换成整数,再用内置函数chr(int_num)还原成字符。

    return ''.join(chars) # 返回“无缝链接”转换后的utf-8字符串。


回页首

示例代码运行效果截屏图片


回页首

完成示例代码(跳过完整代码)

#!/sur/bin/nve python
# coding: utf-8

'''
filename = 'hex&utf-8.py'
author = 'dream elf cq'
date = '2022-08-14'
'''


def to_hex(string):
    ''' 字符串转十六进制 '''
    hex_string = [] # 初始化转换后的十六进制字符列表。

    for i in string: # 遍历字符串。
        hex_string.append(hex(ord(i))[2:].zfill(4).upper()) # 用“切片”[:3]方式截取转换后的十六进制字符串除十六进制标识字符外的字符串。由于有的中文字符需四位十六进制字符表示,所以用str.zfill(4)设置成每个字符四位十六进制字符(不足四位前置0)。为了好看,我用str.upper()方法转小写字母为大写。

    return ''.join(hex_string) # 返回“无缝链接”后的十六进制字符串。


def hex_to_chr(hex_string):
    ''' 十六进制字符转utf-8字符串 '''
    chars = [] # 初始化转换后的utf-8字符串列表。

    for i in zip(*[iter(hex_string)]*4):   # 遍历十六进制字符串截取的四位十六进制字符元组。十六进制四位字符截取,用zip()、iter()配合*(星号)实现。
        chars.append(chr(int(''.join(i), 16))) # 无缝拼接四个十六进制字符串,用int(hex_string, 16)内置函数转换成整数,再用内置函数chr(int_num)还原成字符。

    return ''.join(chars) # 返回“无缝链接”转换后的utf-8字符串。


if __name__ == '__main__':
    pycodes = '''
from random import choices # 加载random.choices()方法。

nums = range(1, 11) # 定义1~10的一维数组。
print(f"\n数组 {list(nums)} 长度:{len(nums)}") # 打印数组长度。
new_nums = choices(nums, k=3) # 随机从1~10中选取三个元素的新数组。
print(f"\n取数组 nums 随机三个元素求和:\n随机数组:{new_nums},求和sum:{sum(new_nums)}")
'''
    hex_string = to_hex(pycodes)
    print(f"\nPython代码字符串:\n{'-'*50}\n{pycodes}\n{'-'*50}\n转十六进制字符:\n{hex_string}")
    print(f"\n将上面的十六进制字符串,转utf-8字符串:\n{'-'*50}\n{hex_to_chr(hex_string)}\n{'-'*50}")

回页首

  十六进制字符串转换成为utf-8字符串,其实有一点需要明白——几个十六进制字符表示一个utf-8字符。如果没弄明白这一点,转换后的字符串“乱码”的几率是比较大的。本笔记示例Python代码中有大量的中文注释,所以我用四位十六进制字符来表示那段Python代码的每一个字符。英文字符是ASCII码,在0~255区间,仅用两位十六进制字符就可表示一个英文字符。中文字符则需要三、四个十六进制字符才可以表示。



回首页

__上一篇:__ 单词记忆系统二:音标字符输入

__下一篇:__ 单词记忆系统三:优化音标输入

我的HOT博:

  • Hot:回车符、换行符和回车换行符(1002阅读)
  • Hot:Linux 脚本文件第一行的特殊注释符(井号和感叹号组合)的含义(1017阅读)
  • pandas 数据类型之 Series(1099阅读)
  • 聊天消息敏感词屏蔽系统(字符串替换 str.replace(str1, *) )(1226阅读)
  • 练习:银行复利计算(用 for 循环解一道初中小题)(1111阅读)
  • pandas 数据类型之 DataFrame(1765阅读)
  • Hot:班里有人和我同生日难吗?(蒙特卡洛随机模拟法)(2125阅读)
  • Python字符串居中显示(1792阅读)
  • 练习:求偶数和、阈值分割和求差( list 对象的两个基础小题)(1660阅读)
  • 用 pandas 解一道小题(1988阅读)
  • 可迭代对象和四个函数(1078阅读)
  • “快乐数”判断(1245阅读)
  • 罗马数字转换器(构造元素取模)(1984阅读)
  • Hot:罗马数字(转换器|罗生成器)(4302阅读)
  • Hot:让QQ群昵称色变的代码(33047阅读)
  • Hot:斐波那契数列(递归| for )(4060阅读)
  • 柱状图中最大矩形(1661阅读)
  • 排序数组元素的重复起止(1253阅读)
  • 电话拨号键盘字母组合(1380阅读)
  • 密码强度检测器(1889阅读)
  • 求列表平衡点(1827阅读)
  • Hot: 字符串统计(4299阅读)
  • Hot:尼姆游戏(聪明版首发)(3459阅读)尼姆游戏(优化版)(1074阅读)
推荐条件 点阅破千

回目录


精品文章:

  • 好文力荐:《python 完全自学教程》齐伟书稿免费连载
  • OPP三大特性:封装中的property
  • 通过内置对象理解python'
  • 正则表达式
  • python中“*”的作用
  • Python 完全自学手册
  • 海象运算符
  • Python中的 `!=`与`is not`不同
  • 学习编程的正确方法

来源:老齐教室


回目录

Python 入门指南【Python 3.6.3】


好文力荐:

  • 全栈领域优质创作者——寒佬(还是国内某高校学生)好文:《非技术文—关于英语和如何正确的提问》,“英语”和“会提问”是学习的两大利器。

  • 【8大编程语言的适用领域】先别着急选语言学编程,先看它们能干嘛

  • 靠谱程序员的好习惯


CSDN实用技巧博文:

  • 8个好用到爆的Python实用技巧
  • python忽略警告
  • Python代码编写规范
  • Python的docstring规范(说明文档的规范写法)

更多推荐

十六进制字符串转Python代码(utf-8字符串转十六进制字符串)