您身边的软件定制专家--9年开发经验为您护航

18678812288
0531-88887250

c语言write与python的struct模块交互

文章作者:济南软件开发 时间:2016年12月20日

以下讲的都是用二进制形式打开文件。网上有很多struct模块的文章,下面是我做的小实验。


 

1.对于c里面的fwrite写入一个单字节,写的就是它的二进制。如3,写入文件就是二进制0x03,它并不是3的ascii码,即0x33;而python的struct模块与它一样,例如val = struct.pack('B', 3),返回的val是字符串'0x03',write写入的参数必须字符串类型,因此可以直接将val写入文件。如果此时用read读一个字节出来,它是二进制'0x03',不能显示为正常的ascii码。必须通过struct.unpack('B', val)转成有意义的十进制3输出。
 

 

2.对于python的write,它只接受字符串类型的参数。当写入十进制3的时候,它会被转成'0x33'即它的ascii码存储。如果用read读出来它,可以print出来的值是3.但是此时如果用struct.unpack('B', val)转换的话,print出来的就是51。
 

 

简单而言,对于数字3,直接write写的是整数3的ascii码二进制的字符串;而通过struct是将3转为自身的二进制的字符串。



想要了解更多详情欢迎来电咨询18678812288
登陆网址:www.jnydkj.cn。
联系人:王经理。