python將16進制字符串轉換為整數_Python 16進制與字符串的轉換

電腦上裝了Python2.7和3.3兩個版本,平時運行程序包括在Eclipse里面調試都會使用2.7,但是由于某些原因在cmd命令行中輸入python得到的解釋器則是3.3,

一直沒對此做處理,因為這樣可以對兩個版本的差異有一個測試,而且虛擬機里面是2.7以下的版本。

今天想到需要幾個腳本做常用的編碼轉換,這樣在沒有其他工具的情況下也可以進行轉換,不多說上正文:

首先是2.7版本下:

2.7版本下進行轉換還是很方便的,hex2char:output = 'data'.decode('hex')

char2hex: output = '64617461'.encode('hex')

真的是只需要用到字符串的decode和encode方法就Ok了,因此,因此如果我需要在命令行下運行,可以這樣寫:

copycode.gif

import sys

choose = sys.argv[1]

data = sys.argv[2]

def hex2char():

output = data.decode('hex')

print output

def char2hex():

output = data.encode('hex')

print output

print "Usage: "

if len(sys.argv) == 3:

if choose.lower() == 'hex2char':

hex2char()

if choose.lower() == 'char2hex':

char2hex()

if choose.lower()!='hex2char' and choose.lower()!='char2hex':

print "Wrong param,try again"

else:

print "Wrong number of params,check your input\n"

#this script has passed the test

copycode.gif

這段代碼在2.7的環境下測試已經通過,可以進行十六進制與字符串之間的轉換,如果覺得還不太好用,可以對代碼進行修改修改

但是在3.0以上環境有很多用法則是不再被支持的,如果使用str.encode('hex'),則會報錯:

Traceback (most recent call last):

File "", line 1, in

'data'.encode('hex')

LookupError: unknown encoding: hex

有些人可能會說'hex'應該為"hex",或者說遇到沒有()的情況,實際上Python中單引號和雙引號是沒什么區別的,例如:

ord('a')==97 ,ord("a")==97都是成立的

然后是3.0以上環境:

3.0環境比較常用的是binascii模塊,關于這個模塊的一些函數和方法可以查找手冊,這里且說對于十六進制和字符串的轉換

先貼代碼:

copycode.gif

def hex2char(data):

# binascii.a2b_hex(hexstr)

output = binascii.unhexlify(data)

print(output)

def char2hex(data):

data = b'data'

# binascii.b2a_hex(data)

output = binascii.hexlify(data)

print(output)

copycode.gif

這兩個函數與上述代碼有著相同的功能,代碼中有兩行注釋,表明binascii.a2b_hex(hexstr)和binascii.unhexlify(hexstr)在功能上是等價的,另一個同樣

這里十六進制轉字符串直接調用就可以了,但是當直接使用output = binascii.hexlify(data)時則報錯了,對此函數munuals的說法是:

Return the hexadecimal representation of the binary data. Every byte of data is converted into the corresponding 2-digit hex representation. The resulting string is therefore twice as long as the length of data

因此對傳入的參數必須申明是byte of data,剛開始沒有想到,不知怎么處理,后來想到b'string data'類似于r'string data'(原始字符串,在使用windows路徑時,r'..\path'可以不需要對反斜線轉義),于是有了:

data = b'data'output = binascii.hexlify(data)

于是問題便愉快的解決了,同樣可以進行轉換

另外在2.7中,binascii模塊可以使用,output = binascii.hexlify(data)直接就可以投入使用,不必data = b'data'處理,這也是不同版本之間顯著的區別,2.7的

一些功能用起來更上手,但是3.0版這么做也是出于某種需要

再給幾個進制轉換的例子:

int('bf',16) 將16進制數bf轉為10進制數,把16改為8或2就對于不同的進制

hex(num),把hex換成bin或oct就對應于二進制數和八進制了

看到有一段不錯的不錯進制轉換的代碼:

copycode.gif

importos,sys

#global definition#base = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F]

base = [str(x) for x in range(10)] + [ chr(x) for x in range(ord('A'),ord('A')+6)]

#bin2dec#二進制 to 十進制: int(str,n=10)

defbin2dec(string_num):

return str(int(string_num, 2))

#hex2dec#十六進制 to 十進制

defhex2dec(string_num):

return str(int(string_num.upper(), 16))

#dec2bin#十進制 to 二進制: bin()

defdec2bin(string_num):

num =int(string_num)

mid =[]

whileTrue:

if num == 0: breaknum,rem = divmod(num, 2)

mid.append(base[rem])

return ''.join([str(x) for x in mid[::-1]])

copycode.gif

最后再給出Ascii碼和整數轉換的函數:

chr()函數以一個Ascii碼作為參數,返回對應的整數

ord()函數則剛好與chr()相反,返回對應Ascii碼,如果參數超過Ascii碼表示范圍則返回對應的unicode值

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/539148.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/539148.shtml
英文地址,請注明出處:http://en.pswp.cn/news/539148.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python多個文件打包成exe_多個py文件生成一個可運行exe文件

一、概述 目前有一個python腳本,需要在別的電腦中運行,安裝python環境太麻煩,封裝成exe文件,運行比較方便。 二、演示 環境說明 python版本:3.7.9 操作系統:windows 10 安裝模塊 pip3 installer pyinstaller 封裝 新建目錄test,目錄結構如下: ./├── conf.py └── …

CSV文件的轉義處理

原文:http://blog.csdn.net/maqingli20/article/details/7095132 ------------------------------------------------------------------------------------ CSV文件是一種適合程序格式化輸出數據的文件格式。它使用英文逗號作為列分隔符,文件可以直接用…

華為讀取版本exe_關于esrv_svc.exe和SurSvc.exe疑似泄露用戶信息的猜測

封面圖片來源:https://www.weibo.com/1885454921/GpBhR3vpk?typerepost#_rnd1573301201348抱歉,寫網頁文章的次數不多,排版沒研究過,請原諒。下面是正題:由來:最初是借由火絨的自定義防護規則,…

gitlab ci mysql_php-Gitlab CI:在階段之間保留MySQL數據

根據Gitlab問題頁面:Share service between build stages.Gitlab-CI的設置方式如下:each job is run in each job is run independently of the others,including potentially running on different machines. And the servicesare run locally on each …

flask 部署_只需10分鐘!就能用Flask,Docker和Jenkins部署機器學習模型

摘要: 一杯茶的功夫部署完成機器學習模型!在生產環境中部署機器學習模型是數據工程中經常被忽視的領域。網上的大多數教程/博客都側重于構建、訓練和調整機器學習模型。如果它不能用于實際的預測,那么它又有什么用呢? 接下來了解一…

Hive 導入CSV文件

SerDe 介紹 Hive 使用如下FileFormat 類讀寫 HDFS files: TextInputFormat/HiveIgnoreKeyTextOutputFormat: 讀寫普通HDFS文本文件. SequenceFileInputFormat/SequenceFileOutputFormat: 讀寫SequenceFile格式的HDFS文件. Hive 使用如下SerDe 類(反)序列化數據: MetadataTyp…

騰訊云mysql架構_一個數據庫存儲架構的獨白

本文由云社區發表本文作者:許中清,騰訊云自研數據庫CynosDB的分布式存儲CynosStore負責人。從事數據庫內核開發、數據庫產品架構和規劃。曾就職于華為,2015年加入騰訊,參與過TBase(PGXZ)、CynosDB等數據庫產品研發。專注于關系數據…

Hive高級函數

Hive的函數太多了。用法和sql的差不多。 簡單查詢 select ... from...where... 使用各種函數 hive>show functions;//查看所有函數 hive>describe function explode;//查看函數的使用方法 LIMIT語句 列別名 嵌套select語句 標準函數: reverse() upper() ...…

groupby索引有效嗎_SQL IN 一定走索引嗎?

摘要IN 一定走索引嗎?那當然了,不走索引還能全部掃描嗎?好像之前有看到過什么Exist,IN走不走索引的討論。但是好像看的太久了,又忘記了。哈哈,如果你也忘記了MySQL中IN是如何查詢的,就來復習下吧。問題問題…

mysql函數使用場景_mysql的函數和存儲過程的比較,以及在實際場景中的使用案例...

一.存儲過程和函數的區別函數調用有返回值存儲過程調用用call語句,函數調用直接飲用函數名參數IN,OUT,INOUT只適用于存儲過程,對函數而言所有參數默認都是輸入參數IN用于把數值傳入到存儲過程中OUT用于輸出參數將數值傳遞給調用者…

hive性能調優

原文:http://www.tuicool.com/articles/rMvQvm ---------------------------------------------------------------------- limit 限制調整 -- 因為使用 limit 語句時候,是先執行整個查詢語句,然后再返回部分結果的 set hive.limit.optimize…

推薦系統之 BPR 算法及 Librec的BPR算法實現【1】

【推薦系統之 BPR 算法】 1、關于BPR的論文原文: BPR: Bayesian Personalized Ranking from Implicit Feedback 2、參考1:論文快讀 - BPR: Bayesian Personalized Ranking from Implicit Feedback (該博主的網站不錯,尤其論文快…

ios 篩選_萬千網友讓quot;低調使用quot;的軟件!居然還支持iOS

點擊藍字關注我們昨天的耳朵神器大家感覺怎么樣?享受了耳朵今天我們享受一下眼睛~可能很多同學對漫畫是情有獨鐘但是,之前小黑一直介紹的都是安卓端的軟件今天要給大家介紹的這款軟件是IOS安卓都有終于可以不被IOS的同學吐槽了而且經過測試小黑真的想說一…

Linux卸載/刪除多余網卡

卸載 使用命令ifconfig命令查看網卡情況 確認自己使用的是哪一塊網卡,然后把其它的網卡都卸載掉。 運行命令ifconfig 網卡名稱 down。 如: ifconfig eth1 down 再次運行ifconfig就會發現被卸載掉的網卡沒了。現在可以ping 一下內網的IP試試看能不能pin…

CentOS7:JDK1.7.0_80安裝

一、安裝前檢查 執行以下命令: rpm -qa | grep jdk 查看系統是否已經自帶openjdk,如果存在 執行以下命令: yum -y remove files files為查出的、系統自帶的openjdk相關文件,運行以上命令將相關文件卸載 執行命令 java -version[rootlocalhost…

python海龜繪圖畫圣誕帽男人_python海龜繪圖實例教程

本文以實例形式介紹了python turtle模塊即海龜繪圖的使用方法,對于需要進行圖形編程的朋友相信會有一定的借鑒價值。python turtle模塊簡介:python2.6版本中引入的一個簡單的繪圖工具,叫做海龜繪圖(turtle graphics)1.使用海龜繪圖首先我們需…

spring+mybatis 多數據源整合

原文&#xff1a;http://blog.csdn.net/fhx007/article/details/12530735 ---------------------------------------------------------------------------------- 直接看spring的配置吧 <!-- 數據源配置 --> <bean id"ds1" class"org.apache.commo…

四管前級怎么去掉高低音音調_一些歌曲音調太高怎么才能唱上去??

展開全部首先得提高肺活量 然后就是練聲&#xff01;怎 樣 練 聲&#xff1a;練聲的目的1&#xff0c;使歌唱發聲系統各器官的肌肉更e68a84e8a2ad62616964757a686964616f31333236373231有力&#xff0c;并能協調一致。2&#xff0c;建立正確的聲音概念。3&#xff0c;擴展音域&…

python繪制星空_用python畫星空源代碼是什么?

用python畫星空源代碼是什么&#xff1f;用python畫星空源代碼是from turtle import *from random import random,randintscreen Screen()width ,height 800,600screen.setup(width,height)screen.title("模擬3D星空")screen.bgcolor("black")screen.mod…

Linux - xshell上傳文件報錯亂碼

xshell上傳文件報錯亂碼&#xff0c;解決方法 rz -be 回車 下載sz filename轉載于:https://www.cnblogs.com/RzCong/p/8600899.html