Как преобразовать символ Unicode в Int в Swift
пользователь попросил следующий вопрос один из моих ответов.
у меня есть символ в юникоде
u{0D85}
. Как мне получитьInt
значение из него?
Я собирался направить их на другое переполнение стека Q&A, но я не мог найти его. Они относятся к преобразованию другого направления:
- как преобразовать Int в символ в Swift
- как я могу получить в Юникоде представлен целым числом, в Swift?
и они, похоже, спрашивают, как преобразовать число в Строковой форме в фактическое Int
(как в преобразовании "1"
to 1
).
вместо того, чтобы пытаться соответствовать моему ответу в комментарии к asker, я собираюсь дать ответ под. Тип u{0D85}
несколько неясно, но я буду охватывать различные возможности.
1 ответов
Hex to Int
если вы начинаете с \u{0D85}
и вы знаете шестнадцатеричное значение символа Юникода, тогда вы можете также написать его в следующем формате, потому что это Int
уже.
let myInt = 0x0D85 // Int: 3461
строка в Int
я предполагаю, что у вас есть "\u{0D85}"
(в кавычках), что делает его String
по умолчанию. И так как это String
, вы не можете быть уверены, что вы будете только один Int
значение для общего случая.
let myString = "\u{0D85}"
for element in myString.unicodeScalars {
let myInt = element.value // UInt32: 3461
}
я мог бы также использовать myString.utf16
и let myInt = Int(element)
, но мне легче иметь дело со скалярными значениями Unicode (UTF-32), когда есть возможность таких вещей, как emoji. (См.ответ для получения более подробной информации.)
символ для Int
Свифт Character
, который является расширенный кластер графем, не имеет utf16
или unicodeScalars
собственность, так что если вы начиная с Character
затем преобразовать его в String
сначала, а затем следуйте инструкциям в строка в Int