Objective-C Преобразование целого числа в шестнадцатеричное

У меня есть словарь, инициализированный так ...

keyDictionary = [[NSDictionary dictionaryWithObjects:values forKeys:keys]retain];

где keys - это NSArray алфавита и других символов и значений представляет собой NSArray из беззнаковых символов s, которые являются шестнадцатеричными кодами ключей USB для этих символов.

USB-ключ коды - это шестнадцатеричные значения в диапазоне от 0x04 до 0xE7. Я пытаюсь создать карту между этими двумя в зависимости от того, какая клавиша нажата на клавиатуре.

Массив values ​​ создается так ...

NSArray *values = [NSArray arrayWithObjects: 
                  [NSNumber numberWithUnsignedChar:0x04]/*A*/,
                  [NSNumber numberWithUnsignedChar:0x05]/*B*/, /*ETC*/]; 

В идеале, когда я запускаю этот код ... где keys - это NSArray алфавита и других символов и ...

У меня есть словарь, инициализированный так ...

keyDictionary = [[NSDictionary dictionaryWithObjects:values forKeys:keys]retain];

где keys - это NSArray алфавита и других символов и значений - это NSArray из беззнаковых символов s, которые являются шестнадцатеричными кодами ключей USB для этих символов.

USB-ключ коды - это шестнадцатеричные значения в диапазоне от 0x04 до 0xE7. Я пытаюсь создать карту между этими двумя в зависимости от того, какая клавиша нажата на клавиатуре.

Массив values ​​ создается так ...

NSArray *values = [NSArray arrayWithObjects: 
                  [NSNumber numberWithUnsignedChar:0x04]/*A*/,
                  [NSNumber numberWithUnsignedChar:0x05]/*B*/, /*ETC*/]; 

В идеале, когда я запускаю этот код ... где ключи - это NSArray алфавита и других символов и ...

У меня есть словарь, инициализированный так ...

keyDictionary = [[NSDictionary dictionaryWithObjects:values forKeys:keys]retain];

где keys - это NSArray алфавита и других символов и значений - это NSArray из беззнаковых символов s, которые являются шестнадцатеричными кодами ключей USB для этих символов.

USB-ключ коды - это шестнадцатеричные значения в диапазоне от 0x04 до 0xE7. Я пытаюсь создать карту между этими двумя в зависимости от того, какая клавиша нажата на клавиатуре.

Массив values ​​ создается так ...

NSArray *values = [NSArray arrayWithObjects: 
                  [NSNumber numberWithUnsignedChar:0x04]/*A*/,
                  [NSNumber numberWithUnsignedChar:0x05]/*B*/, /*ETC*/]; 

В идеале, когда я запускаю этот код ...

keyDictionary = [[NSDictionary dictionaryWithObjects:values forKeys:keys]retain];

где ключи - это массив NSA алфавита и других символов, а значения - это массив NSA из unsigned char s, которые представляют собой шестнадцатеричные коды ключей USB для этих символов.

Коды ключей USB представляют собой шестнадцатеричные значения в диапазоне от 0x04 до 0xE7. Я пытаюсь создать карту между этими двумя в зависимости от того, какая клавиша нажата на клавиатуре.

Массив values ​​ создается так ...

NSArray *values = [NSArray arrayWithObjects: 
                  [NSNumber numberWithUnsignedChar:0x04]/*A*/,
                  [NSNumber numberWithUnsignedChar:0x05]/*B*/, /*ETC*/]; 

В идеале, когда я запускаю этот код ...

keyDictionary = [[NSDictionary dictionaryWithObjects:values forKeys:keys]retain];

где ключи - это массив NSA алфавита и других символов, а значения - это массив NSA из unsigned char s, которые представляют собой шестнадцатеричные коды ключей USB для этих символов.

Коды ключей USB представляют собой шестнадцатеричные значения в диапазоне от 0x04 до 0xE7. Я пытаюсь создать карту между этими двумя в зависимости от того, какая клавиша нажата на клавиатуре.

Массив values ​​ создается так ...

NSArray *values = [NSArray arrayWithObjects: 
                  [NSNumber numberWithUnsignedChar:0x04]/*A*/,
                  [NSNumber numberWithUnsignedChar:0x05]/*B*/, /*ETC*/]; 

В идеале, когда я запускаю этот код ... где character == @ "I"

- (uint8) getUSBCode:(NSString *)character
{
    NSNumber *val = [keyDictionary objectForKey:character];

    return (uint8)[val unsignedCharValue];
}

Я ожидал получить обратно 0x0C , но я получаю 12 обратно как int (что после того, как я подумал об этом, имеет смысл). Мне нужно сохранить шестнадцатеричное значение. Мне НЕ нужно строковое значение. Мне нужно прямое преобразование в шестнадцатеричное значение или лучший способ сохранить

uint8 - это просто символ без знака typedef.

EDIT Я не понимал, когда опубликовал это ранее. Вот что мне нужно.

Мне нужно шестнадцатеричное значение этих кодов, потому что они отправляются по внутренней сети компании. Кроме того, значение нажатой клавиши преобразуется из прямого порядка байтов (или маленького, прямо сейчас ускользает от меня, какой именно) в другое, а затем передается по внутренней сети. Я понимаю, что эти значения хранятся в двоичном формате, но мне нужно передать их в шестнадцатеричном формате.

Кроме того, я заявил, что получаю 12 обратно из функции. Я читал 12 из отладчика, не получая значения. Возможно, поэтому я запутался.

14
задан DavidAndroidDev 29 March 2011 в 14:33
поделиться