我正在尋找幫助將十六進制遞增1.此示例可能爲「000001」或「AD02D3」並遞增爲「000002」或「AD02D4」。我無法弄清楚如何在Swift中做到這一點。如果我轉換爲一個Int: var num2 = Int(str,radix:16) 我鬆開了所有前面的零,並且轉換有困難。如何遞增十六進制數
有什麼建議嗎?
我正在尋找幫助將十六進制遞增1.此示例可能爲「000001」或「AD02D3」並遞增爲「000002」或「AD02D4」。我無法弄清楚如何在Swift中做到這一點。如果我轉換爲一個Int: var num2 = Int(str,radix:16) 我鬆開了所有前面的零,並且轉換有困難。如何遞增十六進制數
有什麼建議嗎?
保存在一個變量
字符串長度轉換爲整數Int(str, radix: 16)
添加1至整數
使用格式字符串與保存的長度,並指定領先的「0」
創建了新的字符串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
完美的Zaph!這很棒。 – JLanders
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"]
???我鬆開所有前面的零,並有轉換回來的困難?請告訴我們至少你的代碼片段,你試圖解決這個問題。 – user3441734