0

与我的帖子linux 将字符串值作为十六进制转串行(已在 x86 系统上解决)有关,我在 i368 系统上遇到问题。该代码适用于 intel atom ubuntu 系统。但是在带有 ubuntu 的英特尔至强上,这不再起作用了。

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

我使用了 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));

串行设备对原子系统作出反应,但对至强没有反应。

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

4

0 回答 0