我从我的Arduino上的某个模拟引脚获取int值。我如何将它连接到String
,然后将String
转换为char[]
?将int或String转换为Arduino上的char数组
有人建议我尝试char msg[] = myString.getChars();
,但我收到的消息是getChars
不存在。
我从我的Arduino上的某个模拟引脚获取int值。我如何将它连接到String
,然后将String
转换为char[]
?将int或String转换为Arduino上的char数组
有人建议我尝试char msg[] = myString.getChars();
,但我收到的消息是getChars
不存在。
要转换和追加的整数,使用operator +=(或成员函数concat
):
String stringOne = "A long integer: ";
stringOne += 123456789;
要获得字符串作为char[]
类型,使用toCharArray():
char charBuf[50];
stringOne.toCharArray(charBuf, 50)
在这个例子中,只有49个字符的空间(假设它被null终止)。你可能想要使大小动态。
只是作为参考,在这里是如何与动态长度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);
是的,这是简单的东西作为一个类型转换痛苦钝,但可悲的是这是最简单的方法。
没有一个工作。这里有一个更简单的方法..标签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;
}
}
'str'不是指向数组的指针,它是一个实现'[]'运算符的String对象。 –
你真的需要一个可修改的数组吗?如果没有,你可以使用'const char * msg = myString.c_str();'。与'toCharArray()'不同,'c_str()'是一个零拷贝操作,零拷贝在内存受限设备上是一件好事。 –