2017年11月21日火曜日

Swiftの数値型と文字列変換のメモ

Swiftで16進数をゴニョゴニョする需要があって、ちょっと調べました。

まず、Swiftでの16進数(n進数)の最もお手軽な扱いは、
Stringで定義する
だそうです。

具体例を挙げると
String(11, radix:16)  // a
とか。

ちなみに
Int("a", radix: 16)  //10
はイケますが、Intなので全て10進になります。マジかよ。

なので、計算は10進で行って表示など必要な時に、n進数に変換して表示するのがお手軽です。

で、メモなんですが、この"radix"とやら、2とか8とか16とか区切りのいい数字以外にも、17とか、7とか変な数字を17進数とか7進数にしてくれます。
で出てきた疑問。
何進数まで変換できるの?
試して見た所、36進数まで変換できました。36進数?32じゃなくて?
なんだろうとしばし考えたんですが、

0-9とA-Zで表現できる文字の合計が36文字なので、36進数になってるみたいです。
それ以上のn進数が欲しい場合は、素直に割り算の余りを使いましょう、ということみたいです。

つーか
n進数とかでバリバリ計算したいという向きの方は、素直にObjective-Cで書いた方がいいっぽいですね。