я знаю, что это кажется глупым вопросом, но у меня действительно возникают проблемы.
Я работаю в проекте, где у меня есть некоторые функции, которые я не могу изменить.То есть, у меня есть некоторые функции C (не совсем моя специальность) внутри моего Obj.Код на C, который я могу изменить.
Итак, это ... объяснить немного, что у меня есть.
Я получаю NSData типа "\xce\x2d\x1e\x08\x08\xff\x7f
".Я должен поместить каждый \ шестнадцатеричный код в массив символов, например:
cArray[1]=ce;
cArray[2]=2d;
cArray[3]=1e;
cArray[4]=08;
и т. Д. И т. Д., Конечно, не ЛЮБИТЕ ЭТО, но просто чтобы вы поняли.Моим первым шагом было разделение NSData с помощью subdataWithRange: и заполнение массива всеми «подданными».Поэтому следующим шагом может быть передача каждой позиции этого массива в массив символов, и вот где я застрял.
Я использую что-то вроде (сейчас у меня нет кода)
for(int i=0 ; i<=64 ; i++) {
[[arrayOfSubData objectAtIndex:i] getBytes:&charArray[i]];
}
Чтобы заполнить массив char шестнадцатеричным из моего массива subData.Это работает почти идеально.Почти.
Если взять этот пример cArray, мой NSLog(@"pos%i: %x",i,charArray[i])
покажет мне:
pos1: ce
pos2: 2d
pos3: 1e
pos4: 8
И все «левые нули» подавляются таким же образом.Мой обходной путь на данный момент (и я не уверен, что это лучшая практика здесь) - взять мой subDataArray и initWithFormat:
строку с ним.С этим я могу преобразовать строку в int с помощью NSScanner scanHexInt:
, но затем я снова застреваю при преобразовании обратно моего десятичного числа int в шестнадцатеричный CHAR.Какой лучший способ заполнить мой массив символов таким образом?
Любая помощь или некоторая "жесткая любовь" будут высоко оценены.Спасибо