我正在用C++編寫一個程序來偵聽來自另一個程序的tcp消息流,以便從網絡攝像頭提供跟蹤數據。我有套接字連接,我得到的所有信息,但很難分裂成我想要的數據。將字符數組轉換爲一個整數和浮點數序列
這裏的數據的格式在未來:
8字節的報頭: 4字符串, 整數
32字節的消息: 整數, 浮子, 浮子, 浮子, 浮, float
這是所有被卡在名爲緩衝區的char數組中。我需要能夠將不同的字節解析爲我需要的基元。我試圖製作更小的子數組,比如headerString,它是通過循環遍歷並複製緩衝區數組的前4個元素來填充的,並且我得到了正確的打印輸出('CCV')。但是,當我嘗試與下一個元素(獲取整數)相同的事情,並嘗試打印出來,我得到奇怪的ascii字符被打印出來。我已經嘗試使用stdlib.h中的atoi方法將headerInt數組轉換爲整數,但它總是打印出零。
我已經在python中使用優秀的解壓方法完成了這個任務,它們是C++中的任何替代方案嗎?
任何幫助非常感謝,
喬丹
鏈接
endianness?網絡秩序? – sehe
這裏給出的信息不足。整數/浮點數有多大。他們存儲什麼endianess? **你如何使用unpack()這裏有我們可以使用的信息來解決上面的一些問題。 –
它看起來不是一個「字符數組」,它看起來是二進制數據 - 例如一個* integer *是四個字節,所以你打印的是每個字節的十六進制值(轉換爲[非]可打印字符)。你需要了解積分值是如何序列化(和浮點數),然後寫出相反的... – Nim