将一个int或String转换为Arduino上的char数组
我从我的Arduino上的一个模拟引脚获得一个int值。 我如何连接到一个String
,然后将String
转换为char[]
?
有人build议我尝试char msg[] = myString.getChars();
,但我收到一条消息, getChars
不存在。
-
要转换和追加整数,请使用运算符+ = (或成员函数
concat
):String stringOne = "A long integer: "; stringOne += 123456789;
-
要获得stringtypes为
char[]
,请使用toCharArray() :char charBuf[50]; stringOne.toCharArray(charBuf, 50)
在这个例子中,只有49个字符的空间(假设它被null终止)。 你可能想要使大小dynamic。
就像一个参考,这里是一个如何在dynamic长度之间转换String
和char[]
的例子 –
// Define String str = "This is my string"; // Length (with one extra character for the null terminator) int str_len = str.length() + 1; // Prepare the character array (the buffer) char char_array[str_len]; // Copy it over str.toCharArray(char_array, str_len);
是的,对于像types转换这样简单的事情来说,这是非常令人沮丧的,但遗憾的是这是最简单的方法。
没有任何东西的工作。 这是一个更简单的方法..标签str是什么是一个数组的指针…
String str = String(yourNumber, DEC); // Obviously .. get your int or byte into the string str = str + '\r' + '\n'; // Add the required carriage return, optional line feed byte str_len = str.length(); // Get the length of the whole lot .. C will kindly // place a null at the end of the string which makes // it by default an array[]. // The [0] element is the highest digit... so we // have a separate place counter for the array... byte arrayPointer = 0; while (str_len) { // I was outputting the digits to the TX buffer if ((UCSR0A & (1<<UDRE0))) // Is the TX buffer empty? { UDR0 = str[arrayPointer]; --str_len; ++arrayPointer; } }