C++ 将字符*转换为uint16_t c++;

C++ 将字符*转换为uint16_t c++;,c++,arduino,esp8266,arduino-esp8266,C++,Arduino,Esp8266,Arduino Esp8266,正在尝试将字符*或字符串转换为uint16\t 将其转换为: char* rawData = "9000, 4500, 650, 550, 650, 1650, 600, 550, 650, 550, 600, 1650, 650, 550, 600, 1650, 650, 1650, 650, 1650, 600, 550, 650, 1650, 650, 1650, 650, 550, 600, 1650, 650, 1650, 650, 550, 650, 550, 650, 1650

正在尝试将字符*或字符串转换为uint16\t

将其转换为:

char* rawData = "9000, 4500, 650, 550, 650, 1650, 600, 550, 650, 550, 600, 
1650, 650, 550, 600, 1650, 650, 1650, 650, 1650, 600, 550, 650, 1650, 650, 
1650, 650, 550, 600, 1650, 650, 1650, 650, 550, 650, 550, 650, 1650, 650, 
550, 650, 550, 650, 550, 600, 550, 650, 550, 650, 550, 650, 1650, 600, 550, 
650, 1650, 650, 1650, 650, 1650, 650, 1650, 650, 1650, 650, 1650, 600";


char* rawData_leng = "67";
为此:

uint16_t blawData[67] = {9000, 4500, 650, 550, 650, 1650, 600, 550, 650, 550,
                    600, 1650, 650, 550, 600, 1650, 650, 1650, 650, 1650,
                    600, 550, 650, 1650, 650, 1650, 650, 550, 600, 1650,
                    650, 1650, 650, 550, 650, 550, 650, 1650, 650, 550,
                    650, 550, 650, 550, 600, 550, 650, 550, 650, 550,
                    650, 1650, 600, 550, 650, 1650, 650, 1650, 650, 1650,
                    650, 1650, 650, 1650, 650, 1650, 600};
使用:

char rawData[]="9000, 4500, 650, 550, 650, 1650, 600, 550, 650, 550, 600, 1650, 650, 550, 600, 1650, 650, 1650, 650, 1650, 600, 550, 650, 1650, 650, 1650, 650, 550, 600, 1650, 650, 1650, 650, 550, 650, 550, 650, 1650, 650, 550, 650, 550, 650, 550, 600, 550, 650, 550, 650, 550, 650, 1650, 600, 550, 650, 1650, 650, 1650, 650, 1650, 650, 1650, 650, 1650, 650, 1650, 600";
大小\u t rawDataLength=67;
uint16_t blawData[rawDataLength];
char*token=strtok(rawData,“,”);
对于(大小i=0;i


我不熟悉这一切,所以它可能不是最优的,但crawcall是我一直在寻找的uint16_t值。

那么到目前为止你尝试了什么?我尝试了很多东西,但最终都能让它工作。const char s[3]=”,“char*token;uint16_t crawcall[200]={};int while u count=0;token=strok(rawData,s);while(token!=NULL){inti=atoi(token);crawlCall[while_count]=i;token=strtok(NULL,s);while_count++}谢谢,我用它来帮助我解决这个问题。我对token使用了一个while循环并增加了索引。然后我刚刚构建了一个类似于某个对象的uint16_var[index]=令牌。感谢您的输入!
char rawData[] = "9000, 4500, 650, 550, 650, 1650, 600, 550, 650, 550, 600, 1650, 650, 550, 600, 1650, 650, 1650, 650, 1650, 600, 550, 650, 1650, 650, 1650, 650, 550, 600, 1650, 650, 1650, 650, 550, 650, 550, 650, 1650, 650, 550, 650, 550, 650, 550, 600, 550, 650, 550, 650, 550, 650, 1650, 600, 550, 650, 1650, 650, 1650, 650, 1650, 650, 1650, 650, 1650, 650, 1650, 600";
size_t rawDataLength = 67;

uint16_t blawData[rawDataLength];
char *token = strtok(rawData, ", ");
for (size_t i = 0; i < rawDataLength; ++i) {
    blawData[i] = atoi(token);
    token = strtok(nullptr, ", ");
}
//assert(token == nullptr);
char* rawData = "9000, 4500, 650, 550, 650, 1650, 600, 550, 650, 550, 600, 
1650, 650, 550, 600, 1650, 650, 1650, 650, 1650, 600, 550, 650, 1650, 650, 
1650, 650, 550, 600, 1650, 650, 1650, 650, 550, 650, 550, 650, 1650, 650, 
550, 650, 550, 650, 550, 600, 550, 650, 550, 650, 550, 650, 1650, 600, 550, 
650, 1650, 650, 1650, 650, 1650, 650, 1650, 650, 1650, 650, 1650, 600";

const char s[3] = ", ";
char *token;
uint16_t crawlCall[200] = {};
int while_count = 0;
token = strtok(rawData, s);
while( token != NULL ) 
{
  int i =  atoi (token);
  crawlCall[while_count] = i;
  token = strtok(NULL, s);
  while_count++;
}