高清视频在线观看免费播放器-伊人日本-色九月综合-18禁止看的免费污网站-免费观看性行为视频的网站-天天碰天天操-久久精品国产欧美日韩99热-中文字幕在线视频不卡-国产偷人妻精品一区二区在线-国内精品久-伊人影院在线看-密臀av一区-久久综合五月丁香久久激情-福利一区福利二区-gg国产精品国内免费观看-国产精品 高清 尿 小便 嘘嘘

當前位置: 首頁 >快訊 > 正文

Python工具箱系列(三十七)|天天看熱訊

2023-06-27 05:33:06 來源:博客園

二進制文件操作(上)

python比較擅長與文本相關的操作。但現實世界中,對于非文本消息的處理也很普遍。例如:


(相關資料圖)

◆通過有線、無線傳遞傳感器獲得的測量數據。

◆衛星通過電磁波發送測量數據。

◆數據中心的數萬臺服務器發送當前CPU的占用率信息、內存占用量等眾多指標數據。

以上數據,當然可以以文本方式發送,但是對于帶寬的占用驚人。假設某個對于PM2.5進行測量的傳感器,每隔一秒發送一次測量數據,以文本方式發送消息,內容如下:

"counter: 1, pm25: 170.24119426834042, timestamp: 2022-07-24 08:52:11.138894+00:00"

以上消息占用了81個字節。而如果能夠按照約定的格式直接發送二進制數據,則只需要20個字節,可以大幅提升傳輸效率。此外,以文本方式在本地保存傳感器數據,則一天就需要81*86400/1024=6834M字節,對于傳感器這種體積小巧的嵌入式系統,存儲空間極為有限,很快就會空間耗盡。因此,對非文本數據直接保存與讀取非常有必要。下面的代碼演示了傳感器類,以及傳感器測量數據的二進制文件存儲與讀取的基本操作。

import binasciiimport randomimport structfrom datetime import datetimefrom io import BytesIOfrom time import sleepimport arrowclass sensordata_v1():    def __init__(self):        utc = arrow.utcnow()        self._timestamp = utc.to("Asia/Shanghai")    @property    def counter(self) -> int:        """        計數器        Returns:            int: 從0開始的計數器        """        return self._counter    @counter.setter    def counter(self, value: int):        self._counter = value    @property    def pm25(self) -> float:        """        PM25測量值        Returns:            float: pm25的當前測量值        """        return self._pm25    @pm25.setter    def pm25(self, value: float):        self._pm25 = value    @property    def timestamp(self) -> datetime:        """        當前時點        Returns:            datetime: 當前的時間        """        return self._timestamp.datetime    def __str__(self):        """        以文字輸出相關內容        Returns:            string: 說明性文字        """        return f"counter: {self.counter}, pm25: {self.pm25}, timestamp: {self.timestamp}"    def __repr__(self):        """        輸出字節流的16進制內容        Returns:            string: 16進制顯示相關數值        """        return str(binascii.hexlify(self.toBytes()))    def toBytes(self):        """        將相關數據轉換成為bytes,便于網絡傳輸或者寫入文件        Returns:            bytes: 整合測量數據到字節流中        """        with BytesIO() as byio:            byio.write(struct.pack("

其中arrow是非常值得推薦的時間處理框架。python有內置的時間處理框架,功能非常完善,但失之于亂與雜,掌握起來非常不易。而arrow則非常人性化,做到了拿來即用。其安裝過程非常簡單,直接pip install arrow即可。在示例程序中,為了能夠方便存儲,我們將時間戳直接用UNIX的timestamp來表示,轉換后為了保持精度,本例使用double(8字節)存儲,如果要求不高,可以改為float(4字節)。

sensordata_v1類使用@property裝飾器來定義屬性。總共有3個屬性:

◆counter-計數器。從0開始計數累加,后續保存到數據庫中時也方便檢索。

◆pm25-PM2.5測量值。在示例代碼中使用random.uniform模擬一個0到300的隨機浮點值,沒有什么太大的意義,保證每次不同即可。

◆timestamp-數據采集時的對應時間。

str類函數

可以自定義,本例中用它來直觀的表示當前的采集值。當對sensordata_v1類的實例打印時,就會自動調用這個函數。

repr類函數

可以自定義,本例中用它來演示轉換成為字節流bytes時的16進制值。對于程序員來說,16進制來表示字節是比較自然的。

toBytes類函數具體展示了如何將類的屬性值轉換成為二進制字節流,主要依靠python內置的struct模塊。在內存中模擬文件打開一個BytesIO,并且依次寫入struct.pack編碼后的字節流,最終統一輸出。

fromBytes類函數具體展示了如何從字節流反解成為對象的屬性值。struct.pack與struct.unpack成對出現。

toFile函數將編碼好的字節流寫入二進制文件。寫入的模式為"wb",其中w代表全覆蓋寫入的意思,b代表二進制模式的意思。fromFile負責從二進制文件讀回保存的字節流,重新生成各個sensordata_v1對象。

生成的二進制文件,可以使用UltraEditor、InHex等。也可以直接使用vscode自帶的2進制文件瀏覽器擴展Hex Editor,顯示效果如下圖所示:

從圖中可以看出,二進制文件確實節省空間,但人類不容易理解,必然借助于專用工具與代碼來管理。但即使計算機與網絡能力強悍如斯,二進制文件與網絡上的字節流仍然必不可少,不可替代。

標簽:

返回頂部
高清视频在线观看免费播放器-伊人日本-色九月综合-18禁止看的免费污网站-免费观看性行为视频的网站-天天碰天天操-久久精品国产欧美日韩99热-中文字幕在线视频不卡-国产偷人妻精品一区二区在线-国内精品久-伊人影院在线看-密臀av一区-久久综合五月丁香久久激情-福利一区福利二区-gg国产精品国内免费观看-国产精品 高清 尿 小便 嘘嘘
  • <cite id="ecweg"><pre id="ecweg"></pre></cite>
    <rt id="ecweg"><acronym id="ecweg"></acronym></rt>
  • <rt id="ecweg"></rt>
    欧美日韩亚洲国产成人| 亚洲AV无码成人精品一区| 97在线免费视频观看| 国产原创精品在线| 性chinese极品按摩| 中文字幕在线观看第三页| 日韩精品视频一区二区在线观看| 97视频在线免费| 日本高清免费在线视频| 亚洲欧美激情网| 中文字幕在线乱| 黄色免费高清视频| 99精品在线免费视频| 日韩日韩日韩日韩日韩| 国产精品无码乱伦| 欧美性大战久久久久xxx| 手机看片一级片| 成人免费网站入口| 免费无码av片在线观看| 播放灌醉水嫩大学生国内精品| 亚洲国产一二三精品无码| 久艹在线免费观看| 18岁视频在线观看| 妞干网这里只有精品| 成年女人18级毛片毛片免费 | 精品久久久久久久无码| 一道本视频在线观看| 最新av在线免费观看| 久久久久久久久久久免费视频| 亚洲精品手机在线观看| 女人被男人躁得好爽免费视频 | 日韩成人精品视频在线观看| 国产日韩第一页| 黄色三级视频片| 日本a在线天堂| 国产超碰在线播放| 草草视频在线免费观看| 九九热精品国产| 免费观看精品视频| avove在线观看| 亚洲美女性囗交| 欧美 日韩 国产一区| 日本特黄在线观看| 亚欧在线免费观看| 欧美 日韩 国产在线观看| av动漫免费观看| www.精品在线| 日本精品久久久久中文字幕| 日韩精品久久一区二区| 成年人网站av| 亚洲免费黄色网| 亚洲视频在线a| 韩国一区二区av| 久久久久免费精品| 国产主播在线看| 69堂免费视频| 精品国产一二三四区| 精品少妇人妻av免费久久洗澡| 97超碰人人看| 强开小嫩苞一区二区三区网站 | 久久国产精品网| 欧美黄色免费网址| 国产传媒久久久| 97av中文字幕| 六月婷婷在线视频| 国产精品后入内射日本在线观看| 人妻激情另类乱人伦人妻| 亚洲色婷婷久久精品av蜜桃| 手机福利在线视频| 香蕉视频免费版| 国产精品久久久久9999爆乳| 国产欧美精品aaaaaa片| 精品人妻少妇一区二区| 黄色网页免费在线观看| 少妇性l交大片| 日韩精品aaa| 日产精品久久久久久久蜜臀| 免费看黄在线看| www黄色在线| 日本一二三区在线| 日韩一级特黄毛片| 国产成人无码精品久久久性色| 午夜视频在线瓜伦| 污视频在线观看免费网站| 日本黄大片在线观看| 欧美日韩在线中文| 婷婷激情综合五月天| 亚洲 欧美 综合 另类 中字| 黄色片视频在线播放| 亚洲欧美日韩一二三区| 美女扒开大腿让男人桶| 亚洲第一中文av| 男女裸体影院高潮| 久久久精品三级| 黄色激情在线视频| 一女二男3p波多野结衣| 欧美久久久久久久久久久久久久| 国产免费人做人爱午夜视频| 蜜桃网站在线观看| 日韩av手机版| www.99热这里只有精品| 午夜一区二区视频| 成人一级片网站| 黑人巨茎大战欧美白妇| 日韩av片专区| 免费无码国产v片在线观看| 黄色一级片网址| 色综合av综合无码综合网站| 一区二区三区四区免费观看| 天天爽天天爽夜夜爽| 亚洲精品无码国产| 国产一二三四五| 日本黄色福利视频| 精品视频无码一区二区三区| 97免费视频观看| 久久久久久久久网| 亚洲第一成肉网| 韩国中文字幕av| 久久精品一区二| 日韩欧美视频网站| 国产精品成人久久电影| 成人短视频在线观看免费| 天天av天天操| 亚洲免费av网| aaa一级黄色片| 午夜精品免费看| 在线观看日本一区二区| 日本www.色| 日本超碰在线观看| 99re精彩视频| 色婷婷激情视频| 色偷偷中文字幕| 国产专区在线视频| 国产 国语对白 露脸| 国产精品av免费观看| 国产激情在线看| 我的公把我弄高潮了视频| www.亚洲视频.com| 免费黄色福利视频| 日本激情视频在线播放| 午夜免费福利视频在线观看| 手机免费av片| 视色,视色影院,视色影库,视色网 日韩精品福利片午夜免费观看 | 天天干天天曰天天操| 超碰在线超碰在线| 蜜桃网站在线观看| 波多野结衣之无限发射| 超碰97人人射妻| 涩涩网站在线看| 青青草综合视频| 中文字幕日本最新乱码视频| 嫩草av久久伊人妇女超级a| 亚洲免费一级视频| 永久av免费在线观看| av在线免费观看国产| 毛片av免费在线观看| 午夜xxxxx| 99爱视频在线| 亚洲成人手机在线观看| 欧美日本视频在线观看| 色悠悠久久综合网| 久久男人资源站| 伊人影院综合在线| 黄色大片中文字幕| 91在线第一页| 成人免费观看视频在线观看| 青青草原国产在线视频| 男的插女的下面视频| 网站一区二区三区| 欧美午夜性视频| 成人黄色一级大片| 中国丰满人妻videoshd| 91性高潮久久久久久久| www.爱色av.com| 中文字幕第50页| 国产原创精品在线| 97国产精东麻豆人妻电影| 国产精品12p| 欧美成人黄色网址| 人妻有码中文字幕| 996这里只有精品| 色中文字幕在线观看| 91蝌蚪视频在线观看| 成 年 人 黄 色 大 片大 全| 日本特黄在线观看| 999在线观看| 国产wwwxx| 男女无套免费视频网站动漫| 亚洲国产精品无码av| 乱子伦一区二区| 五月天国产视频| 亚洲综合伊人久久| 成人黄色一级大片| 最新天堂中文在线| 五月天婷婷激情视频| 欧美性猛交xxx乱久交| 动漫av免费观看| 激情五月亚洲色图| av免费网站观看| 麻豆三级在线观看|