内容
先日、AISデータをデコードする時の考え方を読んでいて、そういえばSwiftで文字列をASCIIコード(今回は10進数)に変換するのはどうやるんだろうと思って、調べたらできたので、その結果を残します。
結果的には以下のページが参考になりました。
Swift で文字を文字コードに変換するの「文字列を C 文字列に変換する」部分がほぼそのまま利用できました。
(熊谷さん、とっても参考になりました。ありがとうございます。)
Swiftで文字列をASCII出力するためには、以下のコードを利用する。
var str = "0123w"
let cstr:[CChar] = str.cString(using: .ascii)!
for cchar in cstr {
print(cchar)
}
StringクラスのcString(using:)
メソッドを利用し、引数には.ascii
を利用する。
上記コードの出力例は以下のようになる。
48
49
50
51
119
0
(上から順に0 → 1 → 2 → 3 → wのASCIIコード。最後はNUL(null文字、この場合は文字列末尾)を表す)
今後は上記の内容を元にAISやADS-Bの復号化をSwiftでやっていこうと思います。
そちらの内容も検証でき次第記事にします。
今後やることの参考文献
AISの復号化
ADS-Bの復号化
The 1090MHz Riddle
An open-access book about decoding Mode-S and ADS-B data