Я хотел бы знать, как разобрать шестнадцатеричную строку, представляющую число, в Objective-C. Я готов использовать как объективный, так и метод на основе C.
пример:
#01FFFFAB
следует разобрать на целое число: 33554347
Любая помощь будет оценена по достоинству!
0x
(или0X
). NSScanner примет эти префиксы.вы можете использовать для этого NSScanner
outVal
будет содержать искомое int. 0x не является обязательным.источник
strtol () - ваш друг.
Он преобразует строку в длинную, и вы можете передать основание числа. Сначала уберите этот знак # или передайте strtol указатель на первый числовой символ.
источник
strtol
Функция также намного более мягкая. Пишите подробные модульные тесты (включая пробелы, не шестнадцатеричные символы и т. Д.), Поскольку вы обнаружите несколько неожиданных крайних случаев, которые дадутNSScanner
вам больше контроля.Вы можете использовать следующую строку для преобразования. Это всего лишь однострочный код:
Удачного кодирования !!!
источник
0x
(или0X
), +/- или любых других символов, которые не считаются допустимыми в вашем вводе.Стандартная библиотека Swift 4 представила новый инициализатор для анализа всех целочисленных типов. Требуется строка для синтаксического анализа с использованием системы счисления (т.е. базы) и возвращает необязательное целое число:
источник
Согласно яблоку:
Итак, если у вас есть
NSData
цель, вы можете сделать дальшеисточник
0x
(или0X
) или каких-либо других символов, которые не считаются допустимыми в вашем вводе, но которые принимаются NSScanner.Для Swift 3:
источник