target: arm上實際採集的資料,byte輸出,讀取資料並輸出來;
格式為意義
格式大小
ppdu_id
1個int32
4bmac_id
1個int32
4bmac_addr
1個6位元組 hex
6bdata 1 dim陣列
256長度複數,先實部後虛部都是float16
256x4b
import numpy as np
import binascii
import matplotlib.pyplot as plt
f =open
(r'./phone_2020_08_22__16_26_57.dat'
,'rb'
)buf = f.read(
)#####4b ppduid, 4b mpduid, 6b mac addr, 256*4b data,
x1 = np.frombuffer(buf[0:
4],dtype=np.uint32)
print
(x1)
x2 = np.frombuffer(buf[4:
8],dtype=np.uint32)
print
(x2)
mac0 = np.frombuffer(buf[8:
14],dtype=np.uint8)
mac =
'-'.join(
[np.base_repr(i,16)
if m>
15else
'0'+
str(m)
for i in mac0 ]
)mac_secondway = binascii.hexlify(buf[8:
14]).decode(
'utf-8'
)print
('mac 1st way:'
,type
(mac0[0]
),mac,
'mac second way\n'
, mac_secondway)
dt = np.dtype(np.float16)
dt = dt.newbyteorder(
'<'
)#arm核上所採資料,通常是小端
datacsi = np.frombuffer(buf[14:
14+256*4]
,dtype=dt)
print
('data is :\n'
, datacsi)
plt.figure(
)plt.plot(
range
(len
(datacsi)
),datacsi)
st =14+
256*
4id1 = np.frombuffer(buf[st:st+4]
,dtype=np.uint32)
id2 = np.frombuffer(buf[st+
4:st+8]
,dtype=np.uint32)
mac_raw = np.frombuffer(buf[st+
8:st+14]
,dtype= np.uint8)
mac2 =
[np.base_repr(m,16)
if m>
15else
'0'+
str(m)
for m in mac_raw]
print
('second ppdu is :'
, id1,id2, mac2)
datacsi2 = np.frombuffer(buf[st+
14:st+14+
256*4]
,dtype=dt)
print
('4 of data is:\n'
,datacsi2[0:
4])plt.figure(
)plt.plot(datacsi2[0:
:2],datacsi2[1:
:2],
'b.'
)plt.show(
)
按特定格式讀取字串的資料 sscanf的用法
int sscanf const char buffer,const char format,argument buffer 儲存的資料 format 窗體控制項字串。有關詳細資訊,請參閱 格式規範 argument 可選自變數 locale 要使用的區域設定 sscanf與scanf類似,都是用於...
oracle 生成特定格式uuid
oracle中生成跨系統的唯一識別符uuid非常方便,比生成序列還簡單,直接用sys guid 就行,資料型別是 raw 16 有32個字元。它的生成機制足以保證全球所有系統產生的海量guid重複可能性非常小。這在aixm概念中非常重要。如果要讓返回的uuid滿足標準格式,可利用如下函式實現 cre...
以特定格式拆分日期
1.將給定字串解析成date格式 呼叫 dateformat類的parse 引數是string型別,返回值為date型別。如下 string str1 07月08日1900年 dateformat dateformat new dateformat mm月dd日yyyy年 date date dat...