NSData型からバイト配列に

投稿者: Anonymous

swift2にて質問させてください。

TCP/IPまたはUDP通信を行いNSData型でdataは受信できているのですが
swift2において、byte配列というような型は存在しないのでしょうか。

byte配列に変換し、そのxx番目の配列のxビット目を抜き出す・・・
当の処理を考えているのですが、どのようにしてNSData型のdataをbyte配列のようにして扱ってよいのかわからずに困っています。

初心者まるだしの質問で申し訳ないですが
何かアドバイスいただけると助かります。

解決

XcodeのPlaygroundで動かしてみてください。

import Foundation

let aString = "Hello, world!" 
// 文字列からNSDataインスタンスを作る。
if let aData: NSData = aString.dataUsingEncoding(NSUTF8StringEncoding) {
    // aDataのバイト数と同じ大きさの配列を作る。
    var aBuffer = Array<Int8>(count: aData.length, repeatedValue: 0)
    // aBufferにバイナリデータを格納。
    aData.getBytes(&aBuffer, length: aData.length) // &がアドレス演算子みたいに使える。
    for aChar in aBuffer {
        print("(aChar)") // 各文字のutf-8の文字コードが出力される。
    }
}

出力:

72 101 108 108 111 44 32 119 111 114 108 100 33

NSDataから、バイナリデータを抽出する簡単なサンプルコードです。本来は、C言語の配列にgetBytes()するところですが、Swiftの配列(Array)で代用できる点に注目してください。

回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *