Karakuri.com

Fintechではたらくアプリケーションエンジニアの技術録

SwiftにはByte型がないので戸惑うけれどUInt8がバイトやバイト配列を担っています

むかしむかしのSwiftにはByte型があったと思うのですが、あるとき突然廃止されました。Byte型の配列など使って低級の処理をしていたアプリやプログラムはコンパイルすらできない事態に。C#やJavaからやってきた人も一瞬戸惑うのではないでしょうか。どう調べれば良いかも分からないのですが、結論から言うとUInt8型がByte型に相当するっぽいです。

Swiftのバイト配列

そもそも高級言語でバイト配列を触るなという話かもしれませんが、IoTやっていると触る必要が出てくるものですよね。相手がバイト配列でコマンドを定義していたりするので。例えばC#だと下記のようなバイト配列を定義できます。

var byteArray = new byte[8] { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }

これをSwiftで書くとこうなります。

let byteArray: [UInt8] = [ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ]

こういう痒い所の情報がなかなか出てこないSwiftはまだまだ辛いですなあ。