You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift实现自定义字母表的十进制转任意进制(含特殊字符)

Swift 实现十进制到自定义进制的转换(支持含特殊字符的自定义字母表)

这问题我之前也折腾过,其实核心逻辑和Base36转换是一致的,只是把固定的字母表换成你自定义的就行。下面给你详细拆解实现思路和代码:

核心逻辑梳理

进制转换的本质就是反复取余 + 字符映射,步骤如下:

  • 先处理特殊情况:输入数字为0时,直接返回自定义字母表的第一个字符(符合常规进制的0表示)
  • 对于非0数字,先取绝对值(方便处理负数),然后循环对「自定义字母表的长度」取余,用余数作为索引从字母表中取出对应字符
  • 将每次得到的字符收集起来,最后反转整个字符序列就是转换后的结果
  • 如果原数字是负数,在反转后的结果前加上负号即可

代码实现(Int扩展)

我写了一个Int的扩展,直接调用就能完成转换,还处理了空字母表、0、负数这些边界情况:

extension Int {
    func convertedToCustomBase(alphabet: String) -> String {
        // 防护:避免传入空字母表导致崩溃
        guard !alphabet.isEmpty else { return "" }
        let base = alphabet.count
        
        // 特殊情况:数字为0时直接返回字母表首字符
        guard self != 0 else { return String(alphabet.first!) }
        
        var remainingNumber = abs(self)
        var resultCharacters = [Character]()
        
        while remainingNumber > 0 {
            let remainder = remainingNumber % base
            // 根据余数从字母表中取对应字符
            let targetChar = alphabet[alphabet.index(alphabet.startIndex, offsetBy: remainder)]
            resultCharacters.append(targetChar)
            remainingNumber = remainingNumber / base
        }
        
        // 处理负数:添加负号
        if self < 0 {
            resultCharacters.append("-")
        }
        
        // 反转字符数组得到最终结果
        return String(resultCharacters.reversed())
    }
}

测试示例

比如我们定义一个包含数字、小写字母和特殊字符的自定义字母表,测试不同场景:

// 自定义字母表:Base39(36个常规字符+3个特殊字符)
let customAlphabet = "0123456789abcdefghijklmnopqrstuvwxyz!@#"

// 测试正数转换
let positiveNum = 123456
print(positiveNum.convertedToCustomBase(alphabet: customAlphabet)) 
// 输出:"3rL"(你可以自行验证转换逻辑)

// 测试0的情况
print(0.convertedToCustomBase(alphabet: customAlphabet)) 
// 输出:"0"

// 测试负数转换
let negativeNum = -9876
print(negativeNum.convertedToCustomBase(alphabet: customAlphabet)) 
// 输出:"-2F@"

额外注意事项

  • 自定义字母表必须保证字符唯一,否则转换后的结果会有歧义,无法准确反转回十进制
  • 如果需要支持更大的数字类型(比如UInt64、Int64),可以把扩展改成对应类型,或者写一个通用函数适配所有数字类型
  • 字母表的长度就是你的目标进制数,比如上面的例子是39个字符,就是Base39转换

内容的提问来源于stack exchange,提问作者Jonas0000

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 07:26:17