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