【问题标题】:How to input hex values instead of chars as input for boost::asio::buffer如何输入十六进制值而不是字符作为 boost::asio::buffer 的输入
【发布时间】:2012-08-28 04:32:36
【问题描述】:

我很难为以下场景找到一个好的解决方案:

write 函数接受一个 const char,通过 cin.get(ch) 调用 将其作为用户输入给出em>写(ch)。 ch 是一个 char

while (c.active()) 
{
 char ch;
 cin.get(ch); // blocking wait for standard input

 if (ch == 3) // ctrl-C to end program
   break;
 c.write(ch);
}

这工作正常,但我想修改它,以便可以进行如下输入:“0A00CD88”或“0A 00 CD 88”并将其用作write的输入,它使用它作为 boost::asio::buffer 的输入。

为此,我可以使用 C/C++boost

感谢任何分享这方面知识的人!

【问题讨论】:

  • 更具体地说:“0A 00 CD 88”是我需要发送的命令。所以我必须能够输入“0A00CD88”或空格——我真的不在乎——但它必须转换成与 0A、00、CD、88 值对应的字符流。对不起,这在我最初的问题中并不清楚。 @denys:谢谢-您的解决方案帮助并指导我改进了我的问题
  • 我找到了一个类似的例子here,但我今天有点慢 - 仍在尝试以某种方式适应这个,有什么想法吗?

标签: c++ c char boost-asio cin


【解决方案1】:

That is your solution:

直接替换

std::string hex_chars("E8 48 D8 FF FF 8B 0D");

std::string hex_chars;
std::getline(std::cin, hex_chars);

附:我希望我正确理解了你的问题:)

【讨论】:

  • 我仍然要了解它是如何工作的,但它会按照我的要求工作 - 只是我使用的是 c.write(ch) 而不是 bytes.push_back(c)。谢谢你否认,James McNellis 和 Gbps!
【解决方案2】:

下一个代码将解决您的第一个场景(没有空格)

int x;
std::cin >> std::hex >> x;

Use hexadecimal base

【讨论】:

    猜你喜欢
    • 2012-03-28
    • 1970-01-01
    • 2013-05-13
    • 2021-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-01
    • 1970-01-01
    相关资源
    最近更新 更多