2016-11-28 7 views
-1

Im обучения C, поэтому у меня есть небольшая проблема.Как печатать данные без знака?

Как напечатать:unsigned char *tlv_buffer = NULL;

В основной функции:

unsigned char *tlv_buffer = NULL; 
    int size = 1; 
    int len = 0; 
    int result; 

    tlv_buffer = BKS_MALLOC(size); 

    result = append_bertlv_data(&tlv_buffer, &size, &len, 0xDF04, 2, 
      "\x34\x56"); 
    result = append_bertlv_data(&tlv_buffer, &size, &len, 0xDF81, 3, "ref"); 
    BKS_TRACE("-------- success : %d --------- \n", result); 

    BKS_TRACE("======== %u =======", &tlv_buffer); 

(я не могу видеть, что происходит в append_bertlv_data)

Он должен печатать df 04 02 34 56 df 81 03 72 65 66, но это не так.

Мой результат 3204447612

+1

* «Вопрос в том, как печатать * tlv_buffer?» * Печать как? Ваш вопрос непонятен. Пожалуйста, отредактируйте его и предоставите дополнительную информацию. – user694733

+0

Что содержит буфер и как вы хотите его отображать? –

+1

Существует множество дубликатов для выбора ответа. –

ответ

0

Вы можете использовать следующее:

for (int i = 0 ; i < strlen(tlv_buffer); i++) 
    printf("%02x ",*(tlv_buffer + i)); 

Он будет печатать каждый байт в шестнадцатеричном формате.

редактировать:

использовать пространство для разделения и если вы хотите конкретные байты длины укажите длину вместо размера. лучше всего использовать strlen.

+0

печатает df04023456df810372656600311000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 .................... – Dulguuntur

+0

использовать пространство в Printf, и использовать определенную длину, а не размер петли –

+0

tnks, теперь печать правильно. Но у меня есть вопрос, что «% 02x», вы можете объяснить это больше? – Dulguuntur

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