二进制转换为C语言数组-Python实现
2013-06-19 17:04
846 查看
下面的Python程序可以实现将一个二进制文件转换为C语言的数组格式:
代码写得比较匆忙,但经验证可用。
顺便贴出一个base64格式的pem文件转换为C格式的pyhon实现:
#!/usr/bin/python import sys DEBUG = False def printline(): print '-'*80 def ShowCmdArgs(): i = 0 for arg in sys.argv: print 'arg', i, ':', arg i = i + 1 def usage(): progname = sys.argv[0] printline() print 'Usage:' print 'bin2C.py -i binfilename -o cfilename' printline() def readbin(filename=''): if filename == '': return '' else: lines = '' try: fd = open(filename, 'rb') except: print 'Open ' + filename + ' Fail!' return '' else: buff = fd.read() fd.close() return buff def main(): iname = '' oname = '' if DEBUG: ShowCmdArgs() if len(sys.argv) == 3: if sys.argv[1] == '-i': iname = sys.argv[2] else: usage() return elif len(sys.argv) == 5: if sys.argv[1] == '-i': iname = sys.argv[2] if sys.argv[3] == '-o': oname = sys.argv[4] else: usage() return elif sys.argv[1] == '-o': oname = sys.argv[2] if sys.argv[3] == '-i': iname = sys.argv[4] else: usage() return else: usage() return else: usage() return if iname != '': print 'In: ' + iname if oname != '': print 'Out: ' + oname ibuff = readbin(iname) #print ibuff keystring = '' keyidx = 0 for key in ibuff: if ((keyidx + 1) % 8) == 0: keystring = keystring + '0x%02x' % ord(key) keystring = keystring + '\n' else: keystring = keystring + '0x%02x ' % ord(key) keyidx = keyidx + 1 if oname == '': print keystring else: try: fd = open(oname, 'w') except: print 'Open ' + oname + ' Fail' else: fd.write(keystring) fd.close() print 'Tatol len: ' + str(keyidx) main()
代码写得比较匆忙,但经验证可用。
顺便贴出一个base64格式的pem文件转换为C格式的pyhon实现:
#!/usr/bin/python import base64 import sys DEBUG = False def printline(): print '-'*80 def ShowCmdArgs(): i = 0 for arg in sys.argv: print 'arg', i, ':', arg i = i + 1 def usage(): progname = sys.argv[0] printline() print 'Usage:' print 'pem2C.py -i pemfilename -o cfilename' printline() def readpem(filename=''): if filename == '': return '' else: lines = '' linenum = 0 try: fd = open(filename, 'r') except: print 'Open ' + filename + ' Fail!' return '' else: for line in fd: if '---' in line: pass else: for ch in line: if ch == '\n' or ch == '\r': pass else: lines = lines + ch fd.close() return lines def main(): iname = '' oname = '' if DEBUG: ShowCmdArgs() if len(sys.argv) == 3: if sys.argv[1] == '-i': iname = sys.argv[2] else: usage() return elif len(sys.argv) == 5: if sys.argv[1] == '-i': iname = sys.argv[2] if sys.argv[3] == '-o': oname = sys.argv[4] else: usage() return elif sys.argv[1] == '-o': oname = sys.argv[2] if sys.argv[3] == '-i': iname = sys.argv[4] else: usage() return else: usage() return else: usage() return if iname != '': print 'In: ' + iname if oname != '': print 'Out: ' + oname pem = readpem(iname) print pem keys = base64.b64decode(pem) keystring = '' keyidx = 0 for key in keys: if ((keyidx + 1) % 8) == 0: keystring = keystring + '0x%02x' % ord(key) keystring = keystring + '\n' else: keystring = keystring + '0x%02x ' % ord(key) keyidx = keyidx + 1 if oname == '': print keystring else: try: fd = open(oname, 'w') except: print 'Open ' + oname + ' Fail' else: fd.write(keystring) fd.close() print 'Tatol len: ' + str(keyidx) main()此程序可以将BASE64编码格式的pem文件或crt文件转换为二进制,然后在转换为C语言数值格式。
相关文章推荐
- Python使用struct模块转换C语言结构体,打包、解包二进制数据
- c语言编程如何实现-十进制数转换成二进制和输出
- python实现将元祖转换成数组的方法
- leetcode 将已排序的 数组/链表 转换为二叉搜索树(BST),Python实现
- Python实现字符串与数组相互转换功能示例
- C语言实现十进制转换成二进制
- 用两个栈实现二进制到八进制的转换C语言
- C语言用栈实现十进制转换为二进制的方法示例
- C语言实现十进制转换为二进制
- 如何用C语言实现十进制到二进制的转换并计算二进制中1的个数
- Python中列表list以及list与数组array的相互转换实现方法
- C语言栈的实现及利用栈实现二进制到八进制的转换
- python实现将元祖转换成数组的方法
- 整型数组处理算法(十四)不用库函数,用C语言实现将一整型数转换成字符串
- C语言实现二进制与十进制转换
- (C语言)实现对任意浮点型数据从十进制到二进制的转换
- Python实现的十进制小数与二进制小数相互转换功能
- Python数组遍历的简单实现方法小结
- java 实现 图片文件 与 byte 数组互相转换
- python实现中文字符繁体和简体中文转换