[英]How to convert string to int without skip first zeros's swift?
注意-我不是要在這里轉換hexttoInt ..我要實現的是我有十六進制格式的序列號305419896(Decimal)的9位數字是12345678。值..
我的十進制數字是021340031,十六進制是01459F7F,並分成兩個字符串,例如"0145"
和"9f7f"
..我需要此字符串值,格式為0x0145,0x9f7f。
為了做到這一點,我試圖首先將Str轉換為Int。
let firstValue = Int("0145")
那我只得到145
。
有什么方法可以直接將String轉換為UInt16,或者可以通過任何方法來獲得期望的值?
如果我理解正確,您想將十六進制分割成兩半並顯示最低有效的兩個字節,最高有效的兩個字節嗎?
為此,請使用位掩碼和移位運算符:
let a = 0x00045678
let first = (a >> 16) & 0x0000FFFF
let second = a & 0x0000FFFF
let firstString = String(format:"0x%04X", first)
let secondString = String(format:"0x%04X", second)
輸出:
0x0004
0x5678
格式0x%04X
將打印一個至少4位數的十六進制數字,如果需要的話,其前導零
UInt16
不是基數為16的Int
,而是具有16位存儲的Int
。
您想要的是Int
鮮為人知的初始化器…
let firstValue = Int("0145" radix: 16)
這將為您提供字符串的十六進制值。 但是,它仍然會刪除所有前導零,因為它們沒有價值。 無法避免這種情況。
注意:您可以使用所需的大多數radix
數值,並且如果需要在某個時候轉換回原點,則可以相同的方式從int獲取字符串。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.