Использовать данные NSTextfield для построения массива целых чисел? - PullRequest
0 голосов
/ 23 января 2012

Я использую следующий код для отправки шестнадцатеричной строки в NSStreamoutput:

uint8_t mirandaroutecommand[] = { 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x30, 0x14 };    
NSData *data = [[NSData alloc] initWithBytes:mirandaroutecommand length:sizeof(mirandaroutecommand)];
[hextooloutputStream write:[data bytes] maxLength:[data length]];

Это прекрасно работает, но проблема в том, что мне нужны эти шестнадцатеричные значения из NSTextfields в пользовательском интерфейсе. Я пытался преобразовать данные NSTextfield в целое число, но это не сработало. Есть ли способ использовать данные из нескольких полей NSText для создания массива целых чисел, используя шестнадцатеричные значения?

Я пытался найти существующую тему по этому вопросу, но мне не повезло.

1 Ответ

0 голосов
/ 24 января 2012

Методы NSString integerValue и intValue предполагают десятичное представление, игнорируя и заканчивая гитарой - поэтому примените их к @"0x01", и они увидят 0, за которым следует некоторая гифна (x01), которую они игнорируют.

Чтобы прочитать шестнадцатеричное значение, используйте NSScanner s scanHexInt: (или scanHexLongLong:):

unsigned scannedHexValue;
if ([[NSScanner scannerWithString:textFieldContents] scanHexInt:&scannedHexValue])
{
   // value found
   ...
}

NSScanner является более мощным, чем просто анализ одного значения,поэтому с помощью соответствующих вызовов методов вы можете просмотреть список шестнадцатеричных значений через запятую, если хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...