目前我正在使用此代码将数字转换为 base36 -string:
let number = 300293338
let base36 = String(number, radix: 36);
print(base36) // 4ysbtm
但我想知道如何使用Swift生成一个 Base10到AnyBase转换的字母表。
字母表的例子可能是这样的:
["$", "%", "&", "/", "(", "9", "=", "?", "+", "#", "-", ".", ">", "<", "*", "!", ...]
它可能看起来像这样:
let number = 300293338
let base36 = mycoolfunction(number)
print(base36) // "$%//+#="
答案 0 :(得分:2)
如何将基本基数10用于任何基本转换,修改为自定义数字:
func numberToCustomRadix(_ number: Int, alphabet: String) -> String {
let base = alphabet.count
var number = number
var result = ""
repeat {
let idx = alphabet.index(alphabet.startIndex, offsetBy: number % base)
result = [alphabet[idx]] + result
number /= base
} while number > 0
return result
}
numberToCustomRadix(3, alphabet: "012") // 10
numberToCustomRadix(4, alphabet: "abc") // bb
numberToCustomRadix(5, alphabet: "%#9") // #9
请注意,自定义字母表的问题在于,在编译时很难保证字母表包含不同的字符。例如。 “aaabbbcc”字母表会产生各种转换问题。