簡體   English   中英

如何在不跳過第一個零的快捷方式的情況下將字符串轉換為int?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM