為什麼Python裡的s sendall()不能傳送數值型資料,如果要傳送數值型資料那怎麼辦?

時間 2021-05-30 11:58:54

1樓:北極與幽藍

我在python3用send時是這樣解決的:

傳送端把int轉換成bytes:

packtype = 1

conn.send(bytes([packtype]))接收端再轉換回去:

packtype = conn.recv(4).ord()

2樓:Weibin Wu

網路傳輸的本質,是二進位制資料的傳輸。不管是int,str還是float,本質都是二進位制資料。通用的網路介面可以只支援傳輸二進位制資料(byte),所以需要先將資料轉換為byte,然後才可以傳輸。

3樓:耗子

import binascii

s.send(binascii.a2b_hex(這裡是你要傳送滴東西))

最近做的乙個物聯網專案使用到的,如果直接給硬體傳送數值型別,是不行滴,python是ASCII,你傳送的是byte,硬體的編碼是hex,你直接傳送數值他是認不到滴,所以數值型別->hex-----到硬體,硬體內hex->值,這個方案是可行的,但是記得把協議定好,長度和校驗碼一定要,免得資料出錯

4樓:

你四不四撒,既然是你自己寫的小程式,你傳輸的時候把數值轉換成str/bytes,然後接收是在轉換回數值不就行了。就是呼叫個str int的事兒。

Python 裡為什麼函式可以返回乙個函式內部定義的函式?

鋼鐵直男劉昊然 自界說函式的呼叫是經過訪問自界說函式名來完成的,變數 函式名 參量1,參量2,明顯,與呼叫子程式的辦法不同,自界說函式的呼叫遵從內部函式 如Sin Sqr Tan等 的呼叫規矩,自帶參量也有必要用圓括號括起來。參量可所以常量 變數 表示式或陣列變數名。資料的型別應與子程式界說時的參量...

在python中,整數型別裡,為什麼0o71等於57?可以詳細解答一下嘛?

酷python 0o 表示8進製,逢8進1,參考10進製的逢10進1,0o71 7 8 1 57 推薦一篇講解python進製轉換的文章 python進製轉換 酷python 老馬程式設計 整型數字面值由以下詞法定義進行描述 integer decinteger bininteger octinte...

為什麼 Python 不是 lexical scoping?

先說scope,scope其實就是namespace,是name而不是value。Lexical static scope顧名思義函式的scope取決於被定義時的context,可以從文字推知。反之dynamic scope則取決於呼叫被定義時的context。題主給的例子裡inner的x的確實是定...