c语言数组转python,二进制转换为C语言数组-Python实现

这段Python代码实现了将二进制文件转换为C语言数组格式,同时提供了将Base64格式的PEM文件(如.crt或.pem)转换为二进制,再进一步转换为C语言数组的功能。程序通过命令行参数处理输入和输出文件,并能处理二进制数据的排列和格式转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下面的Python程序可以实现将一个二进制文件转换为C语言的数组格式:

#!/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语言数值格式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值