2015-11-26 3 views
0

Я пытаюсь напечатать unsigned long long данные на последовательном мониторе, но Serial.println() не работает из-за не строковой переменной.Arduino Как распечатать долговременные данные без знака

Так что я искал в Интернете, чтобы конвертировать unsigned long long в String. Я придумал некоторые решения, но никто из них не работает. Например;

uint64_t pipe = 0x12345ABCD9LL;//lets assume the data is 12345ABCD9 hexadecimal 
char buf[50]; 
sprintf(buf, "%llu", pipe); 
Serial.println(buf); 

Этот код не работает. Я попробовал "%lu", "%lld".

Я хочу посмотреть, что мое значение pipe. В этом случае я хочу видеть 12345ABCD9 на последовательном мониторе. Есть ли другой способ сделать это? Я жду вашего ответа. Большое спасибо.

EDIT:

, когда я использую "%lu" я вижу 878361817 переменной на экране (не то, что я хочу). Но другие они просто пустые,

ответ

2

Как насчет деления его на верхнюю половину и нижнюю половину?

Попробуйте это (не проверено):

uint64_t pipe = 0x12345ABCD9LL;//lets assume the data is 12345ABCD9 hexadecimal 
char buf[50]; 
if(pipe > 0xFFFFFFFFLL) { 
    sprintf(buf, "%lX%08lX", (unsigned long)(pipe>>32), (unsigned long)(pipe&0xFFFFFFFFULL)); 
} else { 
    sprintf(buf, "%lX", (unsigned long)pipe); 
} 
Serial.println(buf); 
+0

К сожалению, ничего не исчезает. Спасибо за ваше время –

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