Как преобразовать символ Unicode в Int в Swift

пользователь попросил следующий вопрос один из моих ответов.

у меня есть символ в юникоде u{0D85}. Как мне получить Int значение из него?

Я собирался направить их на другое переполнение стека Q&A, но я не мог найти его. Они относятся к преобразованию другого направления:

и они, похоже, спрашивают, как преобразовать число в Строковой форме в фактическое 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