python中str、bytes、十六进制字符串的相互转换

这篇具有很好参考价值的文章主要介绍了python中str、bytes、十六进制字符串的相互转换。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 基本概念

python中str、bytes、十六进制字符串的介绍文章来源地址https://www.toymoban.com/news/detail-833289.html

  1. str是python的内置函数,str字符串在python中使用''或者""括起来的字符串,比如:
    a = "hello world"
    
  2. bytes也是python的内置函数,bytes字符串通常以b开头,比如:
    byte_str = b'hello world'
    
  3. 十六进制字符串是指字符串中每个字符表示一个十六进制数,两个字符组成一个字节,比如:
    hex_str = '68656c6c6f20776f726c64'
    
    注:十六进制字符串的特点是不会出现f之后的字符,如果出现了hi,则无法转换成十六进制数

2.三者之间的转换方式

  1. 使用binascii模块
    binascii模块官方文档:https://docs.python.org/3.9/library/binascii.html#binascii.hexlify
    binascii.hexlify(data[, sep[, bytes_per_sep=1]])
     Return the hexadecimal representation of the binary data. 
     Every byte of data is converted into the corresponding 2-digit hex representation. 
     The returned bytes object is therefore twice as long as the length of data.
    
    binascii.unhexlify(hexstr)
     Return the binary data represented by the hexadecimal string hexstr. 
     This function is the inverse of b2a_hex(). 
     hexstr must contain an even number of hexadecimal digits (which can be upper or lower case), otherwise an Error exception is raised.
    
    binascii.hexlify会将二进制数据以十六进制的方式返回,binascii.unhexlify会将十六进制表示的数据以二进制的方式返回,具有相同作用的还有bytes.hex()bytes.fromhex()
    import binascii
    #将字符串转换成bytes类型
    str_data = "hello world"
    bytes_data = str_data.encode('utf-8')
    print("bytes_data:", bytes_data)
    
    # 将bytes类型转换成十六进制字符串
    hex_data = binascii.hexlify(bytes_data)
    print("hex_data:", hex_data)
    
    hex_str = hex_data.decode('utf-8')	
    # 打印结果
    print("hex_str:", hex_str)
    
    # 将十六进制字符串转换成bytes类型
    bytes_data = binascii.unhexlify(hex_str)
    str_data = bytes_data.decode('utf-8')
    # 打印结果
    print(str_data)
    
    响应结果:
    bytes_data: b'hello world'
    hex_data: b'68656c6c6f20776f726c64'
    hex_str: 68656c6c6f20776f726c64
    hello world
    
  2. 工作中可能还会遇到这种字符串,如b’\xe5\x97\xa8\xe5\xae\xa2’,这种是因为原始的字符不属于ascii字符集。utf-8是一个编码系统,可以与ascii兼容,可参考https://www.freecodecamp.org/chinese/news/what-is-utf-8-character-encoding/

到了这里,关于python中str、bytes、十六进制字符串的相互转换的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 字符串string转换长整型int(八进制、十进制、十六进制)

    strtoul() 是C语言标准库中用于将字符串转换成无符号长整数的函数。它的完整原型如下: 其中, nptr 代表要被转换成无符号长整数的字符串; endptr 是一个指向字符指针的指针,该指针指向已经转换了的最后一个字符的下一个位置; base 指定要采用的进制,范围是2 ~ 36。 该函

    2024年02月07日
    浏览(39)
  • JAVA 十六进制与字符串的转换浅谈

      笔者前几日在开服过程中需要将字符串转化成为16进制的字符串,在网上找到了一些方法尝试之后,均发现存在一个问题--字符串转为16进制后再转回来,英文正常,中文出现乱码 笔者前几日在开服过程中需要将字符串转化成为16进制的字符串,在网上找到了一些方法尝试之后,均发

    2024年02月07日
    浏览(27)
  • 51单片机LCD1602液晶屏显示字符,字符串,(有)无符号整数,十六进制数,二进制数等

    LCD1602液晶显示器是广泛使用的一种字符型液晶显示模块。液晶显示模块具有体积小、功耗低、显示内容丰富、超薄轻巧等优点,在嵌入式应用系统中得到越来越广泛的应用,这讲中向大家介绍的LCD1602 液晶显示模块(其内部控制器为HD44780 芯片),它可以显示两行,每行16 个字

    2024年02月04日
    浏览(35)
  • python实现十六进制转十进制

    先来看下十六进制的定义以及表示方式,以下是百度百科上的解释: 十六进制 (简写为 hex 或下标16)是一种基数为16的计数系统,是一种逢16进1的进位制。通常用数字0、1、2、3、4、5、6、7、8、9和字母A、B、C、D、E、F(a、b、c、d、e、f)表示,其中:A~F表示10~15,这些称作

    2023年04月19日
    浏览(35)
  • Python hex()十六进制转换

    Python hex() 函数用于将整数转换为以“0x”为前缀的小写十六进制字符串: 输出: 十六进制 到 十进制 使用 int() 函数 ,第一个参数是字符串 ‘0Xff’ ,第二个参数是说明,这个字符串是几进制的数。 转化的结果是一个十进制数。 二进制 到 十进制 八进制 到 十进制 其实可以看

    2024年02月11日
    浏览(29)
  • PYTHON : 二进制 、 八进制 、十六进制的转换和输出

    十进制转换成其他进制 保存为文本串 二进制 bIn() 八进制 oct() 十六进制 hex() 不输出前缀 使用format函数 如果不想输出进制前面的 前缀符号 , 这时我们就要使用format函数 在这里我们要注意 , 二进制和八进制 的再format里的 符号是‘b’,‘o’ 而十六进制format 里的符

    2023年04月09日
    浏览(39)
  • Python生成十六进制数补零的方法:用format()取代hex()

    Python的hex函数可以将任意整数转换为十六进制数,而且以0x为头。 我在写一个代码需要处理ASCII字符,众所周知ASCII的范围是0~255(十六进制数为0x00~0xFF),我尝试去掉十六进制数最前面的0x,由于hex()返回的类型是字符串,因此加方括号[2:]去掉头两个字符,代码如: 但在后续

    2024年02月11日
    浏览(48)
  • JS十六进制,CRC冗余,小程序发送蓝牙数据,十六进制GBK编码转换等

    小程序问题:https://kf.qq.com/faq/170705YVZFZZ170705eyI7Rr.html 调用: 注意:这里的true和false代表是否大端小端转换 调用: 调用: 调用: 调用: 调用: 此代码写到小程序utils目录下的utuils.js文件中 调用:页面最上边先引入,然后再使用 调用: 这里发送buffer1给小程序公用api就可 调

    2024年02月16日
    浏览(33)
  • 十六进制转换到十进制(java)

    一、前言  首先我们要知道十六进制的转换以及十以上的进制的转换与十以下的进制转换是不一样的,它们在一位上会用超过9的数字,这个我们在利用以前的方法就行不通了,我接下来就向大家分享一种方法。(注:在Java中10---15分别用A B C D E F表示,不分大小写) 二、正文

    2024年02月11日
    浏览(41)
  • 【FPGA仿真】Matlab生成二进制、十六进制的txt数据以及Vivado读取二进制、十六进制数据并将结果以txt格式保存

    在使用Vivado软件进行Verilog程序仿真时可能需要对模块输入仿真的数据,因此我们需要一个产生数据的方法(二进制或者十六进制的数据),Matlab软件是一个很好的工具,当然你也可以使用VS等工具。 以下分别给出了使用Matlab模拟产生二进制和十六进制数据的例子,例子仅供参

    2024年02月01日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包