2017-07-28 71 views
0

我一直在研究一个Arduino项目。它有一个关于RFID的书面库MFRC522。我需要改变这个库的内容,为此我需要使用printf的输出作为变量。需要printf作为字符串或char数组的输出

我的意思是:

Serial.print(F("Card UID:")); 
for (byte i = 0; i < uid->size; i++) { 
    if(uid->uidByte[i] < 0x10) 
     Serial.print(F(" 0")); 
    else 
     Serial.print(F(" ")); 
    Serial.print(uid->uidByte[i], HEX); 
} 
Serial.println(); 

和一般的输出来作为

Card UID: A6 74 E6 2B 

我需要这些ID的把它们放在数组或类似这样的东西。请教我一些使用它们作为变量的方法。

+0

如果您想将字符串作为变量名称使用'std :: map'。 – NathanOliver

+0

只需将'uid-> uidByte [i]'放入一个向量中,而不是将它传递给'print'。我不明白问题 – user463035818

+2

@Batmaca。我不明白你的问题 –

回答

1

看为标准sprintf(更好snprintf,甚至更好,但只在Linux的asprintf)从C,POSIX open_memstream,(或者,在标准C++,std::ostringstream)或similar functions for Arduino

+0

在这里可能不是很有用,但GLib的'g_strdup_printf()'是获得'printf'格式的字符串的一种非常方便的方式,而不必担心计算其大小或预先分配足够大的缓冲区。 –

+0

Linux或GNU libc提供'asprintf' –

+0

谢谢!我还没有做过任何Linux特定的编程,所以还没有看到。如果瞄准其他操作系统,即Windows或OS X,GLib仍然有用。 –