电脑上装了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了,因此,因此如果我需要在命令行下运行,可以这样写:

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

这段代码在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模块,关于这个模块的一些函数和方法可以查找手册,这里且说对于十六进制和字符串的转换

先贴代码:

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)

这两个函数与上述代码有着相同的功能,代码中有两行注释,表明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就对应于二进制数和八进制了

看到有一段不错的不错进制转换的代码:

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]])

最后再给出Ascii码和整数转换的函数:

chr()函数以一个Ascii码作为参数,返回对应的整数

ord()函数则刚好与chr()相反,返回对应Ascii码,如果参数超过Ascii码表示范围则返回对应的unicode值

python将16进制字符串转换为整数_Python 16进制与字符串的转换相关推荐

  1. python字符串转换为整数_PYthon如何把一个字符串类型转换为整数类型?

    变量的类型转化 可以执行显式数据类型转换.例如,'123'是str类型的,它可以使用int函数转换为整数. a ='123' b =int(a) 可以使用float函数从浮点字符串(如'123.456 ...

  2. C语言字符串转换为整数(附完整源码)

    C语言字符串转换为整数 C语言字符串转换为整数完整源码 C语言字符串转换为整数完整源码 #include <assert.h> #include <stdio.h> #incl ...

  3. python字符串转整数_如何在Python中将字符串转换为整数

    Python中的所有数据类型(包括整数和字符串)都是对象.通常在编写Python代码时,您需要将一种数据类型转换为另一种数据类型.例如,要对表示为字符串的数字进行数学运算,需要将其转换为整数. 在本教 ...

  4. python字符串转换成整数_在Python中将字符串转换为整数的方法

    在本文中,我们将向你展示如何将Python字符串转换为整数,可在Linux操作平台上进行.Python中的所有数据类型(包括整数和字符串)都是对象,通常在编写Python代码时,你需要将一种数据类型转 ...

  5. python 把带小数的浮点型字符串转换为整数的解决方案

    python 把带小数的浮点型字符串转换为整数的解决方案 参考文章: (1)python 把带小数的浮点型字符串转换为整数的解决方案 (2)https://www.cnblogs.com/mlgjb/ ...

  6. python整数转换字符串_Python | 将字符串转换为整数列表

    python整数转换字符串 Given a string with digits and we have to convert the string to its equivalent list of ...

  7. 整数转化成字符串; 字符串转换为整数

    整数转化成字符串: 字符串转换为整数 /*整数转化成字符串*/ char *IntToStr(int num, char str[]) {int i = 0, j = 0;char temp[100] ...

  8. 字符串转换整数python_Python将字符串转换为整数

    字符串转换整数python In this tutorial you'll see two ways to convert string to integer in python. 在本教程中,您将看 ...

  9. 【剑指offer-Java版】49把字符串转换为整数

    字符串转换为整数 : atoi 可能的输入: 1 带符号数 2 无符号数 3 零 4 空指针 5 超出表示范围 – 暂时仅仅是直接退出且设置最小 – 可以考虑此时抛个异常 6 非法输入,比如并不是一个 ...

最新文章

  1. linux 网卡配置详情
  2. 【ABAP】获取程序中的Include
  3. c mssql mysql_mssql与mysql 数据迁移
  4. AutoMapperHelper
  5. C++:求n以内被3除余余1的所有整数
  6. 语音识别技术的原理及研究难点
  7. C# WPF DataGrid在Grid中自适应窗体大小
  8. RocketMQ原理解析-producer 2.如何发送消息
  9. 如何在iconfont.cn 下载ttf格式的图标
  10. MATLAB泰勒展开lnx,lnx泰勒展开公式形式,lnx泰勒展开式怎么展开,sinx泰勒展开
  11. 转换字母大小写(小写转大写)
  12. 已知屏幕的分辨率,整么计算屏幕比例?
  13. UTF8与GBK字符编码转换
  14. 精通Dubbo——Dubbo配置文件详解
  15. 少儿编程 | 探讨C++课程、MIT Scratch课程、python课程、Noi竞赛、蓝桥怎么引导?如何才能让小孩子飞的更高?附开发工具的下载与安装
  16. 批量修改文件夹下所有文件的名称
  17. 华为5500网络限流配置_华为Eudemon 防火墙BT限流测试方案
  18. SQLite源代码分析----------分词器②
  19. 太空飞行计划LibreOJ - 6001(网络流24题)(最大权闭合图)
  20. Word,Excel的文件如何对比.新旧版本

热门文章

  1. java编程需要数学知识吗_初学Java编程,需要英语和数学基础吗?
  2. 在linux实现公平队列,多级反馈队列调度策略在Linux中的应用和实现.pdf
  3. UVAoj 348 - Optimal Array Multiplication Sequence
  4. oracle 查看数据库性能,oracle 11G使用statspack查看数据库的性能
  5. 正在锁定计算机 win7转圈圈打不开,Win7网络连接图标一直转圈的原因和解决方法...
  6. spark将rdd转为string_八、Spark之详解Tranformation算子
  7. 前端累加nan怎么解决_前端面试,你有必要知道的一些JavaScript 面试题(上)
  8. python 笔试题 英方_4000字转型数据分析师笔试面试经验分享
  9. python 判断每月最后一天_python获取某年中每个月的第一天和最后一天的两种方法...
  10. java char i=2+#039;2#039;;_P039 二维数组的字符按列存放到字符串中 ★★