\
2014年09月17日
Posted by 屋台ブルー at 2014年09月17日00:00 Comment(0)

Swiftで遊ぼう! - 68 プログラマの考え方 8 テキストデコーディング3

swift_logo参考文献:プログラマの考え方がおもしろいほど身につく本 問題解決能力を鍛えよう!←勉強になるよ初めての人にいいかも。
この本のことをこのブログでは「プロおも本(ぷろおもぼん)」とします(^^)/

さて、次の課題を考えてみた。数字を27で割って余りが1なら大文字Aという、このやり方は、「プロおも本」にも書かれているけど、OSに依存する何かしらのコードに従ったアルファベット表記法だろう。じゃあSwiftで考えてみる。何かしらアルファベットをコードする決まり事があると思われ調べてみた。

私の調べた限りアルファベットのコードは3つのアクセス法があることが分かった。

UTF-8
UTF-16
Unicodeスカラー

それぞれが何を意味しているのかイマイチ分からないけど、日本語のように文字数が多い場合はUnicodeを扱うのが一般的でしょう。私が勉強している「プロおも本」は英語の本なので、アルファベット以外の言語に対して余りにも無関心だ。「27」で割って余りを考えるシステムって、ちょっとあり得ないでしょう。ちなみに私が使っている「プロおも本」で出てくる数列「18,12312,171,763,98423,1208,216,11,500,18,241,0,32,20620,27,10」を文字コードにデコードすると「Right? Yes!」というメッセージに変換される。

しかし、Swiftで仕様される3つのコードで変換すると、
UTF-8の場合、
for scalar in originalMessage.utf8 {
println("\(scalar) ")
}
//82
//105
//103
//104
//116
//63
//32
//89
//101
//115
//33

じゃあUTF-16では
for scalar in originalMessage.utf16 {
println("\(scalar) ")
}
//82
//105
//103
//104
//116
//63
//32
//89
//101
//115
//33

そして、Unicodeスカラーにすると、
for scalar in originalMessage.unicodeScalars {
println("\(scalar) ")
}
//R
//i
//g
//h
//t
//?
//
//Y
//e
//s
//!

結局のところMacで使用することのないコードのようなので、この問題はパスした方がいいかなと考えるしだいです
さて、物知りの皆さん、知っていることがあったら教えてください。


同じカテゴリー(Swiftで遊ぼう!)の記事画像
Swiftで遊ぼう! - プログラミングまとめ(ときどき更新)
Swiftで遊ぼう! - 番外編 - Xcode6:ショートカットと用語説明
Swiftで遊ぼう! - 209 - ルートビューのコードは続く:CGRect
Swiftで遊ぼう! - 208 - ルートビューのコード
Swiftで遊ぼう! - 207 - ツールバーボタンとビューコントローラーを繋ぐ
Swiftで遊ぼう! - 206 - ビューコントローラーにビューコントローラーを載せる
同じカテゴリー(Swiftで遊ぼう!)の記事
 Swiftで遊ぼう! - プログラミングまとめ(ときどき更新) (2021-01-31 00:00)
 Swiftで遊ぼう! - 番外編 - Xcode6:ショートカットと用語説明 (2015-04-05 00:00)
 Swiftで遊ぼう! - 209 - ルートビューのコードは続く:CGRect (2015-02-06 00:00)
 Swiftで遊ぼう! - 208 - ルートビューのコード (2015-02-05 00:00)
 Swiftで遊ぼう! - 207 - ツールバーボタンとビューコントローラーを繋ぐ (2015-02-04 00:00)
 Swiftで遊ぼう! - 206 - ビューコントローラーにビューコントローラーを載せる (2015-02-03 00:00)

上の画像に書かれている文字を入力して下さい
 
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。

削除
Swiftで遊ぼう! - 68 プログラマの考え方 8 テキストデコーディング3
    コメント(0)