将字节连接到字符串
Concatenating bytes to strings
我想将两个字符串保存到 EEPROM,用 255(或 0)个字符分隔每个字符串,以便稍后我可以知道每个字符串何时结束。
void saveToE(String data) {
int str_len = data.length() + 1;
char char_array[str_len];
data.toCharArray(char_array, str_len);
for(int addr = 0; addr < str_len; addr++){
EEPROM.write(addr, char_array[addr]);
}
}
问题是数据的串联:
String part1 = "Hello";
String part2 = "World";
String data = part1 + byte 255 + part2 + byte255;
如何在第 1 部分和第 2 部分之后添加字节 255?
您应该可以使用字符串连接来完成此操作,如下所示:
String part1 = "Hello";
String part2 = "World";
String separator = "\xFF"; // That's character 255, in hex
String data = part1 + separator + part2 + separator;
您也可以在 saveToE
函数中进行连接,如下所示:
void saveTwoStringsToE(String one, String two) {
int str_len1 = one.length();
int str_len2 = two.length();
// Add two bytes for 255 separators, and an extra byte for null terminator
char char_array[str_len1+str_len2+3];
one.toCharArray(char_array, str_len1);
char_array[str_len1] = 255;
two.toCharArray(char_array+str_len1+1, str_len2);
char_array[str_len1+1+str_len2] = 255;
for(int addr = 0; addr < str_len1+str_len2; addr++) {
EEPROM.write(addr, char_array[addr]);
}
}
试试这个:
char separator_char[1];
separator_char[0] = 255;
String separator_string = String(separator_char);
那么您应该可以按照您的计划使用该字符串作为分隔符。
我想将两个字符串保存到 EEPROM,用 255(或 0)个字符分隔每个字符串,以便稍后我可以知道每个字符串何时结束。
void saveToE(String data) {
int str_len = data.length() + 1;
char char_array[str_len];
data.toCharArray(char_array, str_len);
for(int addr = 0; addr < str_len; addr++){
EEPROM.write(addr, char_array[addr]);
}
}
问题是数据的串联:
String part1 = "Hello";
String part2 = "World";
String data = part1 + byte 255 + part2 + byte255;
如何在第 1 部分和第 2 部分之后添加字节 255?
您应该可以使用字符串连接来完成此操作,如下所示:
String part1 = "Hello";
String part2 = "World";
String separator = "\xFF"; // That's character 255, in hex
String data = part1 + separator + part2 + separator;
您也可以在 saveToE
函数中进行连接,如下所示:
void saveTwoStringsToE(String one, String two) {
int str_len1 = one.length();
int str_len2 = two.length();
// Add two bytes for 255 separators, and an extra byte for null terminator
char char_array[str_len1+str_len2+3];
one.toCharArray(char_array, str_len1);
char_array[str_len1] = 255;
two.toCharArray(char_array+str_len1+1, str_len2);
char_array[str_len1+1+str_len2] = 255;
for(int addr = 0; addr < str_len1+str_len2; addr++) {
EEPROM.write(addr, char_array[addr]);
}
}
试试这个:
char separator_char[1];
separator_char[0] = 255;
String separator_string = String(separator_char);
那么您应该可以按照您的计划使用该字符串作为分隔符。