clwn.net
当前位置:首页 >> python3 二进制转为16进制字符串 >>

python3 二进制转为16进制字符串

如果不能一次性写入,那就分块.假设data_string 最大长度为max_length ,则只需要将你需要写入的二进制字符串分块,每块大小为max_length,然后循环写入,即可.

# coging:UTF-8# 二进制转16进制 ch=['0','1','2','3','4','5','6','7','8', '9','A','B','C','D','E','F'] x=int(input("请输入一个二进制数=")) y=0 k=0 while True: k+=1 i=x % 10 if i==1: y=y+2**(k-1) x=x//10 if x==0: break z='' while True: k=y % 16 z=ch[k]+z y=y // 16 if y==0: break print(z)

硬编码行不?# -*- coding: cp936 -*- para = '20133233' new_para = '' if not len(para)%2: print para for i in range(0,len(para),2): new_para= new_para + "\\x"+para[i:i+2] else: print '字符串位数不正确!' print new_para

python里常规整型数的位数和机器的位数以及编译器位数有关,分为32位和64位.从python2.2开始,如果int()的参数超出常规整型数范围,结果会自动转换成长整型,而长整型数的位数只和机器的内存大小有关.所以你要想像c那样自动截取超出的位,估计只能用位运算了.

#将16进制字符转成二进制字符def str2byte(s): base='0123456789ABCDEF' i=0 s = s.upper() s1='' while i >> s1'\xc7\xeb\xce\xf0\xbe\xc6\xba\xf3\xbc\xdd\xb3\xb5'>>> print s1.decode('gbk')请勿酒后驾车

从字符串中依次读16个字符出来,用函数int('0010101000101010',2)把这个字符串转成整数,然后用chr转成字符chr(int('0010101000101010',2)),就可以写入文件中了,不过还有一个问题就是不够16位你要如何处理的,可以在文件开始先存一个数字,就是记录01这个串的总长度

a='0x0012e'b= hex(eval(a))print b输出0x12e注意,一般计算机的十六进制数直接输出的时候是不补0的,所以0x12e 就是 0x0012e,就好像 0005和5在整型数是存储成一样的值.

conv 函数要求 data_string 长度一定是8的倍数(每8个bit组成一个byte).用 conv 得到的数据就可以直接写入文件了(open 文件时按照二进制打开).def conv(data): assert (len(data) % 8) == 0, "Invalid binary string data" fmt = ">{}B".

十六进制以两位的格式打印输出比较好查看,所以参考了willenhu的回答,做了些修改: array = [1,2,3,10,11,12]print(array)hex_array = []for item in array: hex_array.append('0x%02x'%item)print(hex_array)输出如下 [1, 2, 3, 10, 11, 12]['0x01', '0x02', '0x03', '0x0a', '0x0b', '0x0c']

#!/usr/bin/env python# -*- coding: utf-8 -*-# 2/10/16 base trans. wrote by srcdog on 20th, April, 2009# ld elements in base 2, 10, 16.import os,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)] +

网站首页 | 网站地图
All rights reserved Powered by www.clwn.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com