/dev/usb/lp0 如果我把它写在终端上,它就可以工作。但是,在 C++ -6ren">
gpt4 book ai didi

c++ - 将\x00 写入文件

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:21:08 27 4
gpt4 key购买 nike

我必须向 USB 设备发送十六进制命令。

命令是:

echo -en "\x1b\x70\x00\x19\xfa" > /dev/usb/lp0

如果我把它写在终端上,它就可以工作。但是,在 C++ 中,十六进制命令存在问题。 \x00 被检测为以 null 结尾的字符串。

我试过两种方法:

std::string cmd = "echo '\\x1b\\x70\\x00\\x19\\xfa' > /dev/usb/lp0";
std::system(cmd.c_str());

没有任何反应。

和:

std::ofstream device;
device.open("/dev/usb/lp0");
device << "\x1b\x70\x00\x19\xfa";
device.close();

设备不执行任何操作。

如何解决这个问题并使用 \x00 字符串?

最佳答案

使用 write写入固定长度字节的函数。

并且由于您正在写入二进制数据,我建议您也以二进制模式打开文件,并写入实际的整数值而不是字符串。


示例代码

std::ofstream device ("/dev/usb/lp0",std::ofstream::binary);
std::uint8_t const message[] = { 0x1b, 0x70, 0x00, 0x19, 0xfa };
if (device)
device.write(reinterpret_cast<char const*>(message), sizeof message);

关于c++ - 将\x00 写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48751312/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com