XML | HTML | TXT
您当前位置:软件开发 >> 新闻动态 >> 软件开发技术 >> 浏览文章

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

以下讲的都是用二进制形式打开文件。网上有很多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 E-Mail:1069706080@qq.com
地址:山东省济南市舜耕路泉城公园东门园内向北50米 鲁ICP备07011972号 版权所有2008-2013 山东赢德信息科技有限公司