2015-10-30 3 views
-2

У меня есть массив символов, какПреобразовать символ * для uint16_t в C

char* str = 0x058f; 

Что я должен сделать, чтобы преобразовать это значение INT и uint16_t и печати правильно это значение по типу uint16_t?

Это означает, что я хочу результат uint16_t является 058f, а также:

uint16_t result = 0x058f; 
+1

["Что такое проблема XY?"] (Http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem) –

+1

Вы хотите конвертировать 'char * str =" 0x058f ";'? Просмотрите 'sscanf()' и 'SCNx16' с' '. – chux

+1

Да, str = "0x058f" – Tiktac

ответ

1

преобразовать это значение в целое и uint16_t и печати правильно это значение по uint16_t

int main(void) { 

    char* str = "0x058f"; 

    int i; 
    unsigned u; 
    if (sscanf(str, "%x", &u) != 1) 
    Handle_Failure(); 
    i = (int) u; 

    uint16_t u16; 
    if (sscanf(str, "%" SCNx16, &u16) != 1) 
    Handle_Failure(); 

    printf("i: 0x%04x i16: 0x%04" PRIx16 "\n", i, u16); 
    return 0; 
} 

i: 0x058f i16: 0x058f 
+0

Большое спасибо, я получил его ~ – Tiktac

1

Вы можете использовать strtol для преобразования строки в целое значение

*char* str = "0x058f"; 
result = strtol(str,NULL,16); 
printf("result = %x\n",result);* 

Надеюсь, это поможет.

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