专栏首页python 自动化测试Python 十六进制hex-bytes-str之间的转换和Bcc码的生成

Python 十六进制hex-bytes-str之间的转换和Bcc码的生成

前言

做测试模拟器用到了hex-bytes-str之间的转换bcc码的校验,这里总结了一些方法分享给大家。

实例

直接上代码

1.转为十六进制(Hex)字符串

 def getStringFromNumber(self,size,value):
        """
        转为十六进制(Hex)字符串
        :param size:
        :param value:
        :return:
        """
        size=int(size)
        value=int(value)
        by = bytearray([])
        for i in range(1,size+1):
            val = value >> 8 * (size - i) & 255
            by.append(val)
        val = by.hex()
        print("===============================")
        print("%s转为%s个字节十六进制(Hex)字符串:%s"%(value,size,val))
        print("===============================")
        return val
getStringFromNumber(5,11)

执行代码:

方法:getStringFromNumber(size,value)参数一为生成几个batys,参数二为被转化数字

2.bcc校验码

    def bcc(self,value):
        """
            bcc 检查码
        :param number:
        :return:
        """
        numb = len(number)
        nb = int(numb / 2)
        bcc = 0
        for i in range(nb):
            a = 2 * i
            b = 2 * (i + 1)
            aa = number[a:b]
            bcc = bcc ^ int(aa, 16)
        print("===============================")
        print("生成bcc码:%s" % f'{bcc:x}')
        print("===============================")
        return f'{bcc:x}'
bcc('11111111111111111111111111111111111111111111111111111111111222222222222222222222')

执行代码:

方法:bcc(value)参数被转化数字

3.时间字节数组(byte[])转为十六进制(Hex)字符串和解码时间

   def datetime(self):
        """
       字节数组(byte[])转为十六进制(Hex)字符串
        :return:
        """
        print("===============================")
        current_time = time.strftime('%Y-%m-%d-%H-%M-%S', time.localtime(time.time()))
        datatime = current_time[2:]
        by = bytearray([])
        aa = datatime.split("-")
        for val in aa:
            by.append(int(val))
        val = by.hex()
        print("当前%s转化十六进制:%s" % (current_time, val))
        return val

    def time_hex_dec(self,number):
        """
            时间解码
        :param number:
        :return:
        """
        numb = len(number)
        nb = int(numb / 2)
        datatime=[]
        for i in range(nb):
            a = 2 * i
            b = 2 * (i + 1)
            num = number[a:b]
            datatime.append(num)
        Gettime ="20"
        for key,val in enumerate(datatime):
            b = eval("0x" + val)
            Gettime += str(b)
            if key <5:
                Gettime = Gettime +"-"
        print('时间解码:%s' % Gettime)
        print("===============================")
        return Gettime

time = datetime()
time_hex_dec(time)

执行代码:

方法:time (value)参数被转化数字 time_hex_dec(time)解码时间

4.字符串转16进制 与 16进制转字符串

 def str_to_hex(self,data):
        """
        # 字符串转16进制
        :param data:
        :return:
        """
        print("===============================")
        str_16 = binascii.b2a_hex(data.encode('utf-8'))
        print("字符串%s转16进制:%s"%(data,str_16))
        return str_16

    def hex_to_str(self,data):
        """
        # 16进制转字符串
        :param data:
        :return:
        """
        strs = (binascii.unhexlify(data)).decode()
        print("16进制%s转字符串:%s"%(data,strs))
        print("===============================")
        return strs
data = str_to_hex("wencheng你好")
hex_to_str(data)

执行代码:

方法:str_to_hex(value) ,hex_to_str(data)

5.字符串转字节 str --> bytes与字节转字符串 bytes --> str

 def str_to_bytes(self,b):
        """
             字符串转字节  str --> bytes
        :param b:
        :return:
        """
        print("===============================")
        print(str.encode(b))  # 默认 encoding="utf-8"
        print(bytes(b, encoding="utf8"))
        print(b.encode())  # 默认 encoding="utf-8"
        return str.encode(b)

    def bytes_to_str(self,a):
        """
        字节转字符串 bytes  --> str
        :param b:
        :return:
        """
        print(bytes.decode(a))  # 默认encoding="utf-8"
        print(str(a, encoding="utf-8"))
        print(a.decode())  # 默认 encoding="utf-8"
        print("===============================")
data = str_to_bytes("wencheng你好")
bytes_to_str(data)

执行代码:

方法:str_to_bytes(value) ,bytes_to_str(data)

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家的支持。

本文分享自微信公众号 - 自动化测试 To share(gh_92d7607a3e04),作者:wencheng

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-09-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • python生成指定大小的测试txt文档

    在测试过程中经常遇到文件上传的功能,文件的大小边界值测试一直没有好的解决办法,这里我分享一个创建文件的脚本希望对大家有帮助。

    wencheng
  • Docker下搭建jenkins学习笔记

    今天给大家分享下如何在Docker下搭建jenkins构建环境直接使用docker镜像真是简单除暴无脑,现在分享给大家,也给大家做个参考。

    wencheng
  • Python Faker随机生成测试数据(干货)

    Faker是一个Python软件包,可为您生成伪造数据。无论您是需要引导数据库,创建美观的XML文档,填充持久性以进行压力测试还是匿名化来自生产服务的数据,Fa...

    wencheng
  • python时间操作

    1357548276.53 2013-01-07 08:44:36 1357519476.0 ++++++++++++++++++++++++++++++...

    py3study
  • python常见模块-collections-time-datetime-random-os-sys-序列化反序列化模块(json-pickle)-subprocess-03

    小结:时间戳是计算机能够识别的时间;格式化时间是人能够看懂的时间;结构化时间则是用来操作时间的

    suwanbin
  • Swift 基本语法02-"let"和"var"

    用户1890628
  • 在Mapx中设置单个图元的样式

            前几天研究了一下,感觉都快忘了。虽然去啃帮助仍然可以把这些东西啃出来,但有点烦。把记忆的东西零星整理一下: Mapx4不支持具体到图元的样式的指...

    用户1075292
  • unittest批量组织依赖用例(组织依赖用例,结果前端展示,测试报告发送 )

    在上一篇《unittest批量组织依赖用例(一)》,我们讲了在拿到依赖case的情况下如何批量生成测试方法,那么如何组织依赖case呢,我们今天来试试~本次以E...

    软件测试君
  • 每一个程序员要遵守的一些优秀编程风格

    无论你是业余的还是专业的程序员,正确的编程风格,不但有助于提升软件产品的功能,还可以明显减少软件灾难的产生。今天,我们就来探讨一下有助于我们获取更佳编程风格的一...

    Crossin先生
  • Python爬虫JSON及JSONPath运行原理详解

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,它使得人们很容易的进行阅读和编写。同时也方便了机器进行解析和生成。...

    砸漏

扫码关注云+社区

领取腾讯云代金券