最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python中字節(jié)數(shù)組和16進制字符串轉換方式

 更新時間:2023年06月03日 15:37:54   作者:EUNC  
這篇文章主要介紹了Python中字節(jié)數(shù)組和16進制字符串轉換方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

Python字節(jié)數(shù)組和16進制字符串轉換

參考示例1

以下示例僅供參考,性能高低以實際測試情況為準,這里只考慮能否實現(xiàn)數(shù)據(jù)轉換

字節(jié)(bytes)轉字符串(str)

rec_msg = b'\x12\x55\xaa\xFF\x55\x34'
out_s = '' ?
for i in range(0, len(rec_msg)): ? ? # 獲取字節(jié)數(shù)組字數(shù)據(jù),注意引號 ' ' 之間有一個空格
? ? out_s = out_s + ' ' + (hex(int(rec_msg[i]))).upper()[2:].zfill(2)
print(out_s) ? ?# >>> 12 55 AA FF 55 34

轉換原理解析:分離出byte,轉為int(), 再hex()轉回16進制數(shù)后截取0x前綴,再遍歷拼接成字符串

參考示例2

在例子中對指定的字符串:

faa5fbb5fcc5fdd5010200000028000001900000000a002d00000000017d7840000003e800005fa55fb55fc55fd5

使用了三種方法將其轉換為大寫字母并每隔2個字符用空格分割處理后得到一個新字符串,為: 

FA A5 FB B5 FC C5 FD D5 01 02 00 00 00 28 00 00 01 90 00 00 00 0A 00 2D 00 00 00 00 01 7D 78 40 00 00 03 E8 00 00 5F A5 5F B5 5F C5 5F D5

為驗證三種方法的執(zhí)行效率,對原字符串擴充為其100倍長度,然后執(zhí)行10000次處理,從其耗時結果上看,第一種方法最慢,第二、三種方法較好。

# -*- coding: utf-8 -*-#
#-------------------------------------------------------------------------------
# Name: ? ? ? ? MySplit
# Description: ?將指定的字符串轉換為大寫字母并每隔2個字符用空格分割后得到一個新字符串
# Author: ? ? ? Administrator
# Date: ? ? ? ? 2018/7/6
#-------------------------------------------------------------------------------
import re
import time
#待分割字符串
myStr = 'faa5fbb5fcc5fdd5010200000028000001900000000a002d00000000017d7840000003e800005fa55fb55fc55fd5'
#分割后: FA A5 FB B5 FC C5 FD D5 01 02 00 00 00 28 00 00 01 90 00 00 00 0A 00 2D 00 00 00 00 01 7D 78 40 00 00 03 E8 00 00 5F A5 5F B5 5F C5 5F D5
def mySplit1(str):
? ? t=''
? ? for i in range(len(str)/2):
? ? ? ? t += str[2*i:2*(i+1)] + ' '
? ? t = t.upper()
? ? return t
def mySplit2(str):
? ? t = str.upper()
? ? p = re.compile('.{1,2}') ?# 匹配任意字符1-2次
? ? return ' '.join(p.findall(t))
def mySplit3(str):
? ? t = str.upper()
? ? return ' '.join([t[2*i:2*(i+1)] for i in range(len(t)/2)])
print('原始字符串:\n' + myStr + '\n')
print('轉換后字符串:')
print('mySplit1: ' + mySplit1(myStr))
print('mySplit2: ' + mySplit2(myStr))
print('mySplit3: ' + mySplit3(myStr))
print(u'\n耗時測試:')
myStr = myStr * 100
for f in [mySplit1, mySplit2, mySplit3]:
? ? t = time.time()
? ? for i in range(10000):
? ? ? ? f(myStr)
? ? print(f.func_name + ': ' + str(time.time()-t) + ' s')

假設: 

hex_string = “deadbeef”

轉換成字符串格式

>>> hex_data = hex_string.decode("hex")
>>> hex_data
"\xde\xad\xbe\xef"

轉換成字節(jié)數(shù)組

>>> import array
>>> array.array('B', hex_data)
array.array('B', [0xDE, 0xAD, 0xBE, 0xEF])

轉換成字節(jié)列表

>>> map(ord, hex_data)
[0xDE, 0xAD, 0xBE, 0xEF]

如果是2.6以后版本:

>>> bytearray(hex_data)
bytearray(b'\xde\xad\xbe\xef')

然而有可能出現(xiàn)無法打印的字符串,例如:\x12\x45\x00AB 

這種情況下:不要用.decode(“hex”)

下面的將返回bytearray,并在python3中正常工作 

bytearray.fromhex(“de ad be ef 00”)

使用binascii

import binascii
a='45222e'
s=binascii.unhexlify(a)
b=[ord(x) for x in s]

直接編寫程序

data = "fef0babe"
bits = ""
for x in xrange(0, len(data), 2)
? ? bits += chr(int(data[x:x+2], 16))

還原byte型字符串 

binascii.b2a_hex(hex_data)

Python簡單的16進制轉字符串

Python以字符串形式存在的16進制數(shù),轉為該16進制對應的ascii字符串比較麻煩。

如:

hex_str = ‘7468616e6b20796f752076657279206d75636821' # thank you very much!

首先要將其轉為16進制數(shù)

hex = hex_str.encode(‘utf-8')

然后再轉為字符串

str_bin = binascii.unhexlify(hex)
str = str_bin.decode(‘utf-8')

函數(shù):

import binascii
def hexStr_to_str(hex_str):
    hex = hex_str.encode('utf-8')
    str_bin = binascii.unhexlify(hex)
    return str_bin.decode('utf-8')
if __name__ == "__main__":
	hex_str = '7468616e6b20796f752076657279206d75636821' 
	print(hexStr_to_str(hex_str))

簡單方法來了

我們知道,base16編碼就是將字符用16進制表示

'a' =base16=> b'61'

那么簡單對16進制字符串進行base16解碼即可

import base64
hex_str = '7468616e6b20796f752076657279206d75636821'?
print(base64.b16decode(hex_str.upper()))

總結

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • 在spyder IPython console中,運行代碼加入?yún)?shù)的實例

    在spyder IPython console中,運行代碼加入?yún)?shù)的實例

    這篇文章主要介紹了在spyder IPython console中,運行代碼加入?yún)?shù)的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • python-numpy-指數(shù)分布實例詳解

    python-numpy-指數(shù)分布實例詳解

    今天小編就為大家分享一篇python-numpy-指數(shù)分布實例詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • Jmeter并發(fā)執(zhí)行Python 腳本的完整流程

    Jmeter并發(fā)執(zhí)行Python 腳本的完整流程

    這篇文章主要介紹了Jmeter并發(fā)執(zhí)行 Python 腳本的問題詳解,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-09-09
  • Python hdbcli的使用小結

    Python hdbcli的使用小結

    hdbcli是連接SAPHANA數(shù)據(jù)庫的Python庫,提供數(shù)據(jù)庫交互功能,本文就來介紹一下Python hdbcli的使用,具有一定的參考價值,感興趣的可以了解一下
    2025-09-09
  • python 隊列詳解及實例代碼

    python 隊列詳解及實例代碼

    這篇文章主要介紹了python 隊列詳解的相關資料,并附簡單實例代碼,幫助大家學習了解數(shù)據(jù)結構的隊列,需要的朋友可以參考下
    2016-10-10
  • Python搜索引擎實現(xiàn)原理和方法

    Python搜索引擎實現(xiàn)原理和方法

    這篇文章主要介紹了Python搜索引擎實現(xiàn)原理和方法,并對大數(shù)據(jù)分析做了詳細解釋,喜歡的朋友參考一下。
    2017-11-11
  • python使用xlrd模塊讀取xlsx文件中的ip方法

    python使用xlrd模塊讀取xlsx文件中的ip方法

    今天小編就為大家分享一篇python使用xlrd模塊讀取xlsx文件中的ip方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • 基于python對B站收藏夾按照視頻發(fā)布時間進行排序的問題

    基于python對B站收藏夾按照視頻發(fā)布時間進行排序的問題

    這篇文章主要介紹了基于python對B站收藏夾按照視頻發(fā)布時間進行排序,在實現(xiàn)過程中中間程序可能因為各種原因掛掉,因此在中間加入了儲存中間狀態(tài)的功能,否則每次掛掉都要重新爬速度非常慢,本文給大家介紹具體使用方法,一起看看吧
    2021-05-05
  • Python計算字符寬度的方法

    Python計算字符寬度的方法

    這篇文章主要介紹了Python計算字符寬度的方法,結合實例形式較為詳細的分析了Python針對字符寬度的計算方法,需要的朋友可以參考下
    2016-06-06
  • python重要函數(shù)eval多種用法解析

    python重要函數(shù)eval多種用法解析

    這篇文章主要介紹了python重要函數(shù)eval多種用法解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-01-01

最新評論

罗源县| 江油市| 汤阴县| 马龙县| 武定县| 财经| 虞城县| 东台市| 乃东县| 三原县| 德格县| 孟津县| 云龙县| 诸城市| 灯塔市| 盱眙县| 海淀区| 大石桥市| 德惠市| 裕民县| 香港 | 岗巴县| 潼关县| 武夷山市| 敖汉旗| 汶川县| 达孜县| 石渠县| 侯马市| 河池市| 株洲县| 连云港市| 蒙自县| 九龙县| 丰台区| 潜山县| 福建省| 南漳县| 太仓市| 绥宁县| 大同县|