卓尔高考网

python常用的十进制16进制字符串字节串之间的转换

篇首语:本文由小编为大家整理,主要介绍了python常用的十进制16进制字符串字节串之间的转换相关的知识,希望对你有一定的参考价值。

进行协议解析时,总是会遇到各种各样的数据转换的问题,从二进制到十进制,从字节串到整数等等

废话不多上,直接上例子

NS。jSzhUoEr.COM

 

整数之间的进制转换:

  • 10进制转16进制: hex(16)  ==>  0x10
  • 16进制转10进制: int("0x10", 16)  ==>  16
类似的还有oct(), bin()


-------------------

字符串转整数:

  • 10进制字符串: int("10")  ==>  10
  • 16进制字符串: int("10", 16)  ==>  16
  • 16进制字符串: int("0x10", 16)  ==>  16


-------------------

字节串转整数:

  • 转义为short型整数: struct.unpack("  (1, 0)
  • 转义为long型整数: struct.unpack("  (1,)


-------------------

整数转字节串:

  • 转为两个字节: struct.pack("  b"x01x00x02x00"
  • 转为四个字节: struct.pack("  b"x01x00x00x00x02x00x00x00"


-------------------

字符串转字节串:

  • 字符串编码为字节码: "12abc".encode("ascii")  ==>  b"12abc"
  • 数字或字符数组: bytes([1,2, ord("1"),ord("2")])  ==>  b"x01x0212"
  • 16进制字符串: bytes().fromhex("010210")  ==>  b"x01x02x10"
  • 16进制字符串: bytes(map(ord, "x01x02x31x32"))  ==>  b"x01x0212"
  • 16进制数组: bytes([0x01,0x02,0x31,0x32])  ==>  b"x01x0212"


-------------------

字节串转字符串:

  • 字节码解码为字符串: bytes(b"x31x32x61x62").decode("ascii")  ==>  12ab
  • 字节串转16进制表示,夹带ascii: str(bytes(b"x01x0212"))[2:-1]  ==>  x01x0212
  • 字节串转16进制表示,固定两个字符表示: str(binascii.b2a_hex(b"x01x0212"))[2:-1]  ==>  01023132
  • 字节串转16进制数组: [hex(x) for x in bytes(b"x01x0212")]  ==>  ["0x1", "0x2", "0x31", "0x32"]


===================

 

测试用的python源码

 

NS。jSzhUoEr.COM

import binascii  import struct      def example(express, result=None):      if result == None:          result = eval(express)      print(express, " ==> ", result)      if __name__ == "__main__":            print("整数之间的进制转换:")      print("10进制转16进制", end=": ");example("hex(16)")      print("16进制转10进制", end=": ");example("int("0x10", 16)")      print("类似的还有oct(), bin()")            print("
-------------------
")            print("字符串转整数:")      print("10进制字符串", end=": ");example("int("10")")      print("16进制字符串", end=": ");example("int("10", 16)")      print("16进制字符串", end=": ");example("int("0x10", 16)")            print("
-------------------
")            print("字节串转整数:")      print("转义为short型整数", end=": ");example(r"struct.unpack("")      print("转义为long型整数", end=": ");example(r"struct.unpack("")        print("
-------------------
")        print("整数转字节串:")      print("转为两个字节", end=": ");example("struct.pack("")      print("转为四个字节", end=": ");example("struct.pack("")            print("
-------------------
")            print("字符串转字节串:")      print("字符串编码为字节码", end=": ");example(r""12abc".encode("ascii")")      print("数字或字符数组", end=": ");example(r"bytes([1,2, ord("1"),ord("2")])")      print("16进制字符串", end=": ");example(r"bytes().fromhex("010210")")      print("16进制字符串", end=": ");example(r"bytes(map(ord, "x01x02x31x32"))")      print("16进制数组", end =": ");example(r"bytes([0x01,0x02,0x31,0x32])")            print("
-------------------
")            print("字节串转字符串:")      print("字节码解码为字符串", end=": ");example(r"bytes(b"x31x32x61x62").decode("ascii")")      print("字节串转16进制表示,夹带ascii", end=": ");example(r"str(bytes(b"x01x0212"))[2:-1]")      print("字节串转16进制表示,固定两个字符表示", end=": ");example(r"str(binascii.b2a_hex(b"x01x0212"))[2:-1]")      print("字节串转16进制数组", end=": ");example(r"[hex(x) for x in bytes(b"x01x0212")]")                  print("
===================
")  

 

 

转自:https://blog.csdn.net/crylearner/article/details/38521685

NS。jSzhUoEr.COM

以上是关于python常用的十进制16进制字符串字节串之间的转换的主要内容,如果未能解决你的问题,请参考以下文章

您可能还会对下面的文章感兴趣: