如何读取数组的元素?

时间:2016-09-29 14:04:36

标签: c++ arrays serial-port

我使用以下命令从串口获取数据:

char buf [256];
char a [256];
memset (&buf, '\0', sizeof buf);

/* *** READ *** */
if (n < 0)
{
    std::cout << "Error reading: " << strerror(errno) << std::endl;
}

/* Print what I read... */
std::cout << "" << buf;
int sa=0;
printf("Gelen Data : \n");

for(sa=0;sa<15;sa++){
    printf("::%0.2X",buf[sa]);
}

这是我的数据:

::02::03::98::00::07::20::16::09::29::16::19::45::C0::00::00::00

我可以看到使用这些命令的数据:

for(sa=0;sa<15;sa++){
        printf("::%0.2X",buf[sa]);
}

但我不会在任何等式中使用buf[]数组的元素;例如,我想在下面的等式中使用buf[2]

if(buf[2]==02){
    cout<<"Equality"<<endl;
}

有人能帮助我吗?

2 个答案:

答案 0 :(得分:1)

您可能希望以十六进制格式比较它们。

if( buf[2]==0x02){
      cout<<"Equality"<<endl;
}

答案 1 :(得分:1)

也可以使用带有十六进制值的switch语句,这可以提高性能,或者更有可能 - 如果你有很多值可以使用,那么使代码更具可读性。 即

switch (buf[2]) {
  case 0x02:
    doSomething(); break;
  case 0x04: 
    soSomethingelse(); break;
}