iOS 二進位制流轉化-專案筆記

我的時代我來創發表於2017-12-13

自己在做一個專案時,需要使用socket通訊,要和java中bytebuffer轉換的屬性一樣,需要將所有的型別如:int,short,long,string型別轉成和java或者c++通訊都使用的二進位制流格式,要以byte位元組流陣列形式傳遞,當時開發時,有點被這麼多的要求驚訝了一下,然後找了幾天資料都沒有清楚從哪裡下手,壓力比較大,突然想到,那我們iOS都是以nsdata資料流格式傳輸的,而且都是二進位制流格式,正好合適我的需要,於是,我先是建立了socket通訊(廢話不多說,上程式碼):

先是建立連線的 .h檔案


iOS 二進位制流轉化-專案筆記

當然,我使用了GCDAsyncSocket 這個第三方,比較方便,gethub就有地方下載:

然後使.m檔案


iOS 二進位制流轉化-專案筆記


iOS 二進位制流轉化-專案筆記


iOS 二進位制流轉化-專案筆記

最後我發現,既然到最後使用的是nsdata資料流,即他本身就是二進位制流資料傳輸,那和我需要的差距不是很大,於是,我開啟伺服器使用了一個字串進行傳輸,發現可以通過編譯,並沒有任何問題,於是,我直接使用了這個方法,但是,我出現了一個位元組序問題,即(端序),蘋果使用小端序傳輸,而其他都是網路端序大端序傳輸,後來我發現,它提供了相應的整數端序轉換:

如 short型使用 :HTONS 轉換端序,從小端序轉為大端序,HTONL 轉化4位元組端序,HTONLL轉化8位元組端序。

廢不多說上程式碼:


iOS 二進位制流轉化-專案筆記

總體來說,我這次的專案收穫還是很多的,我總結了下,有需要的朋友可以借鑑下哈,

不過轉文記得注意出處喲,畢竟碼字不容易哈!

相關文章