如何增加十六进制数

时间:2016-02-26 18:55:22

标签: swift formatting hex

我正在寻找帮助以16的方式递增十六进制。这个例子可能是" 000001"或" AD02D3"并增加到" 000002"或" AD02D4"。我无法弄清楚如何在Swift中做到这一点。如果我转换为Int:     var num2 = Int(str,radix:16) 我放弃了所有前面的零,转换回来有困难。

有什么建议吗?

2 个答案:

答案 0 :(得分:2)

将字符串长度保存在变量
中 转换为整数Int(str, radix: 16)
将1加到整数
使用具有保存长度的格式字符串并指定前导“0”s 为format函数

创建新字符串
let str = "00000A"

let len = str.lengthOfBytesUsingEncoding(NSUTF8StringEncoding)
let num2 = Int(str, radix: 16)! + 1
let newStr = NSString(format: "%0\(len)X", num2) as String

print("newStr: \(newStr)")  // newStr: 00000B

答案 1 :(得分:0)

import Foundation

func inc(s: String)->String? {
    if let i = Int(s,radix: 16)?.successor() {
        return String(format: "%0\(s.characters.count)X", arguments: [i])
    } else {
        return nil
    }
}

let arr0 = ["01","0000FE00","FFFFFF"]
let arr1 = arr0.flatMap{ inc($0) }

print(arr1) // ["02", "0000FE01", "1000000"]