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.mzph.cn/news/539148.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

华为读取版本exe_关于esrv_svc.exe和SurSvc.exe疑似泄露用户信息的猜测

封面图片来源:https://www.weibo.com/1885454921/GpBhR3vpk?typerepost#_rnd1573301201348抱歉,写网页文章的次数不多,排版没研究过,请原谅。下面是正题:由来:最初是借由火绒的自定义防护规则,…

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等数据库产品研发。专注于关系数据…

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

摘要IN 一定走索引吗?那当然了,不走索引还能全部扫描吗?好像之前有看到过什么Exist,IN走不走索引的讨论。但是好像看的太久了,又忘记了。哈哈,如果你也忘记了MySQL中IN是如何查询的,就来复习下吧。问题问题…

推荐系统之 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的同学吐槽了而且经过测试小黑真的想说一…

CentOS7:JDK1.7.0_80安装

一、安装前检查 执行以下命令: rpm -qa | grep jdk 查看系统是否已经自带openjdk,如果存在 执行以下命令: yum -y remove files files为查出的、系统自带的openjdk相关文件,运行以上命令将相关文件卸载 执行命令 java -version[rootlocalhost…

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;扩展音域&…

java元数据是什么_用存储过程和 JAVA 写报表数据源有什么弊端?

用存储过程和 JAVA 写报表数据源有什么弊端&#xff1f;跟着小编一起来一看一下吧&#xff01;我们在报表开发中经常会使用存储过程准备数据&#xff0c;存储过程支持分步计算&#xff0c;可以实现非常复杂的计算逻辑&#xff0c;为报表开发带来便利。所以&#xff0c;报表开发…

mysql多实例安装启动_MySQL多实例安装启动

Tips&#xff1a;之前我们的一个实例是mysql3306&#xff0c;我们现在再安装一个mysql33071。和之前一样&#xff0c;创建需要的目录文件夹mkdir -p /data/mysql/mysql3307/{data,logs,tmp}创建完 就给文件授权chown -R mysql:mysql /data/mysql/mysql3307/2.进入mysql3307cd /…

用vhdl实现4位加减法计数器_32位加减法器设计

功能特性设计思路基于一位全加器&#xff0c;设计32位并行加法器。并行加法器中全加器的位数与操作数相同&#xff0c;影响速度&#xff08;延时&#xff09;的主要因素是进位信号的传递。主要的高速加法器【1】有基本上都是在超前进位加法器&#xff08;CLA&#xff09;的基础…

绿色背景配什么颜色文字_灰色裤子配什么颜色上衣好看

我们许多人都喜欢灰色。灰色是一种很酷的自然色。灰色大气而沉稳。它介于黑白之间&#xff0c;是一种多用途的颜色&#xff0c;与其他颜色搭配将变得时尚而优雅。那么秋冬季节灰色裤子配什么颜色的上衣好看呢&#xff1f;接下来就来看一组时尚大人的灰色裤子穿搭吧。look1 保温…

浮栅场效应管 符号_场效应管主要参数与特点,场效应管与其他管子的对比

场效应晶体管(Field Effect Transistor缩写(FET))简称场效应管。主要有两种类型&#xff1a;结型场效应管(junction FET—JFET)和金属-氧化物半导体场效应管(metal-oxide semiconductor FET&#xff0c;简称MOS-FET)。场效应管由多数载流子参与导电&#xff0c;也称为单极型晶体…

super go_Go 简单性的价值:来自对 Go 倍加青睐的谷歌软件工程师的自述

点击上方蓝色“Go语言中文网”关注我们&#xff0c;领全套Go资料&#xff0c;每天学习 Go 语言Go 语言最近几年逐渐获得越来越多的开发者的喜欢。在 Go 社区前不久刚刚庆祝Go诞生10周年生日之际&#xff0c;谷歌云软件工程师 Benjamin Congdon 发表个人博客(11 月 11 日发表)&a…

判断鼠标是否在元素上_是否清扫保洁、是否雾撒降尘?江城环卫车装上了北斗,动动鼠标就知道了...

楚天都市报12月1日讯(记者卢成汉 通讯员金婵 潘婷)环卫车装上北斗定位系统&#xff0c;它是否上路进行清扫保洁&#xff0c;是否雾撒降尘。城管队员通过手机或电脑&#xff0c;就可以查到它的运行状态。1日&#xff0c;东湖高新区城管执法局称&#xff0c;该区运行的北斗智能环…

Object 对象详解

2019独角兽企业重金招聘Python工程师标准>>> 面向对象的核心思想:“找合适的对象&#xff0c;做适合的事情”。 合适的对象&#xff1a; 1. 自己描述类&#xff0c;自己创建对象。 2. sun已经描述了好多常用的类&#xff0c;可以使用这些类创建对象。 API&#xff0…

vi/vim命令

概述 vi: Visual Interface vim: VI iMproved vim模式 有三种&#xff1a; 编辑模式(命令模式) 如&#xff1a;通过命令新增一行&#xff0c;删除一行&#xff0c;复制一行&#xff0c;光标移动等 输入模式 输入模式在屏幕末尾一定有这个“-- INSERT --” 末行模式 ESC&…

主mysql删除从服务不同步_MySQL主从不同步解决

由于binlog日志带多删除了几个后发现MySQL主从不同步1、由于binlog日志带多删除了几个后发现MySQL主从不同步mysql> show slave status\G;Slave_IO_Running: NoSlave_SQL_Running: Yes查看报错日志为[ERROR] Slave I/O: Got fatal error 1236 from master when reading data…