以下讲的都是用二进制形式打开文件。网上有很多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转为自身的二进制的字符串。

c语言write与python的struct模块交互的更多相关文章

  1. Python学习——struct模块的pack、unpack示例

    he struct module includes functions for converting between strings of bytes and native Python data t ...

  2. python中struct模块及packet和unpacket

    转自:http://www.cnblogs.com/gala/archive/2011/09/22/2184801.html 我们知道python只定义了6种数据类型,字符串,整数,浮点数,列表,元组 ...

  3. python中struct模块

    # #********struct模块********# # 1.按照指定格式将Python数据转换为字符串,该字符串为字节流,如网络传输时, # 不能传输int,此时先将int转化为字节流,然后再发 ...

  4. 【转】在Python的struct模块中进行数据格式转换的方法

    这篇文章主要介绍了在Python的struct模块中进行数据格式转换的方法,文中还给出了C语言和Python语言的数据类型比较,需要的朋友可以参考下 Python是一门非常简洁的语言,对于数据类型的表 ...

  5. Python:struct模块的pack、unpack

    mport struct pack.unpack.pack_into.unpack_from 1 # ref: http://blog.csdn<a href="http://lib. ...

  6. Python之struct模块

    面对网络协议,在组包拆包时,python提供了struct模块,它可以帮助我们在python值和C语言的结构体之间相互转换,下面一起来了解struct的具体用法. 假设,我们的网络协议为消息id(un ...

  7. day30 python学习 struct模块和 subprocess 模块

    import subprocess import struct aa=input('>>') obj=subprocess.Popen(aa,shell=True,#aa代表的是读取字符串 ...

  8. Python的Struct模块

    python strtuct模块主要在Python中的值于C语言结构之间的转换.可用于处理存储在文件或网络连接(或其它来源)中的二进制数据. #!/usr/bin/env python # -*- c ...

  9. Python struct模块

    有的时候需要用python处理二进制数据,比如,存取文件,socket操作时.这时候,可以使用python的struct模块来完成.可以用 struct来处理c语言中的结构体. struct模块中最重 ...

随机推荐

  1. Golang 绘图基础- 不同的输出源

    先看一个简单代码, 它执行后会产生下面的300*500的png图片文件: 代码: 1: package main 2:  3: import ( 4: "fmt" 5: " ...

  2. Php 笔记1-----request和 response

    不能大于2KB 第一次学习 php,  因为以前习惯了 .net, 所以 刚开始总是按照.net的  思路去思考, 怎么获取 客户端发过来的  request对象啊,  怎么设置response啊.. ...

  3. LoadRunner error -27728

    错误现象1:Action.c(16): Error -27728: Step download timeout (120 seconds) has expired whendownloading no ...

  4. 修复duilib CEditUI控件和CWebBrowserUI控件中按Tab键无法切换焦点的bug

    转载请说明原出处,谢谢~~:http://blog.csdn.net/zhuhongshu/article/details/41556615 在duilib中,按tab键会让焦点在Button一类的控 ...

  5. bzoj 3757 苹果树(树上莫队算法)

    [题意] 有若干个询问,询问路径u,v上的颜色总数,另外有要求a,b,意为将a颜色看作b颜色. [思路] vfk真是神系列233. Quote: 用S(v, u)代表 v到u的路径上的结点的集合. 用 ...

  6. string中的substr() 和 find() 函数

    string问题中经常遇到在stringA中查找stringB,主要通过substr()跟find()来完成 substr().find().replace() 都可以用一个位置加上一个长读去描述子串 ...

  7. 精美&创意的WordPress新发主题集合

    今天我整理了一些精美&创意的WordPress新发主题,它们基本上都融合了最新的设计理念,从简约到响应式,应有尽有. Engo – Smart & Minimal WordPress ...

  8. Bluebird-Core API(二)

    .error .error([function(any error) rejectedHandler]) -> Promise 和catch一样,但是catch捕获了所有错误类型的异常,而err ...

  9. 关于Ext.NET Demo程序在IIS7.5部署出现"Ext未定义"的解决方案

    有以下三点 1.应用程序池请用ASP.NET4.0经典模式 2.安装ASP.NET   控制面板-->程序和功能-->打开或关闭WIndows功能-->Internet信息服务--& ...

  10. How to run a terminal inside of vim?

    [How to run a terminal inside of vim?] :sh turn vim into shell mode d+trl back to vim 参考:http://stac ...