linux将字符串值写入十六进制,x86和i368之间的区别?

时间:2013-09-12 08:25:01

标签: c++ linux string serial-port hex

与我的帖子linux writing string value as hex to serial相关(已在x86系统上解决) 我在i368系统上遇到了问题。 该代码适用于intel atom ubuntu系统。 但是在使用ubuntu的intel xeon上,这不再适用了。

这可能是小/大端的问题吗?

我使用了Erik上述帖子的代码。

我正在使用此方法转换

int convert(std::string str, unsigned char*& charArr)
{


// count the number of character pairs (i.e. bytes) in the string
// and dynamically allocate an array of the required size
const int numBytes = str.size() / 2;
charArr = new unsigned char[numBytes];

for (int i = 0; i < numBytes; ++i)
{
  // grab two characters from the string...
  std::string twoChars = str.substr(2 * i, 2);

  // ...and convert them to an integer using a stringstream
  int byte;
  std::stringstream ss(twoChars);
  ss >> std::hex >> byte;

  // store the result in our char array
  charArr[i] = byte;
}
}

通过

调用方法
const std::string str ="8C000002008E";
unsigned char* toSend;
convert(str, toSend);

用以下内容写入串口:

int kWrite = write(mFd, toSend , sizeof(toSend));

串行设备对原子系统作出反应,但不在xeon上作出反应。

我得到的回答是:未定义的格式或校验和错误

0 个答案:

没有答案