Python 十六進制hex-bytes-str之間的轉換和Bcc碼的生成


前言

近期做測試模擬器用到了hex-bytes-str之間的轉換bcc碼的校驗,這里總結了一些方法。

實例

直接上代碼

  • 轉為十六進制(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,參數二為被轉化數字

 

  • 生成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)參數被轉化數字

 

  • 時間字節數組(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)解碼時間

 

  • 字符串轉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)

 

  • 字符串轉字節 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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM