2016-10-07 5 views
-1

Я использую Java NDK для извлечения некоторой информации из файла «bin» с использованием структуры C. Мне нужно извлечь информацию о шлюзе, в цикле. Я могу извлечь информацию, но мне нужно конкатенировать результаты и добавить точку ., чтобы распечатать окончательный IP-адрес и преобразовать его в char* или string. Я использовал reinterpret_cast, но он не работает.Конкатенация unsigned char [] значение и преобразование в char *

Как преобразовать IP-адрес в строку?

#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__) 

//Gateway.info[4] is unsigned char type 
int config_len = sizeof(ptr->Gateway.info); 
for (int i = 0; i < config_len; i++) { 
    int number = ptr->Gateway.info[i]; 

} 
LOGD("GATEWAY %d",number); 

+0

Является 'LOGD' с помощью [' printf' (или один из его братьев и сестер)] (http://en.cppreference.com/w/c/io/fprintf)? Тогда формат для печати 'char' как маленького целого числа -'% hhd "'. Или ''% hhu '' для 'unsigned char'. –

+0

да используется формат printf. –

+0

Проблема заключается в использовании 'reinterpret_cast', потому что язык C не имеет этой функции. Возможно, вы должны правильно обновить свои языковые теги. –

ответ

0

Я сделал ошибку. Оно работает!

#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__) 


string Result; 
ostringstream convert; 

//Gateway.info[4] is unsigned char type 
int config_len = sizeof(ptr->Gateway.info); 
for (int i = 0; i < config_len; i++) { 
    int number = ptr->Gateway.info[i]; 
    convert << number; 
    Result = convert.str() 

} 
+0

Похоже, что это лучший ответ. Если вы так думаете, продолжайте и принимайте это. –

+0

Но, я думаю, вы должны переместить 'Result =' out ниже цикла. Его нужно только один раз вызвать. –

Смежные вопросы