gpt4 book ai didi

c++ - 如何将二进制十六进制文字输入 std::istream?

转载 作者:行者123 更新时间:2023-11-30 03:45:08 24 4
gpt4 key购买 nike

我有一个方法 deserialize 引用打开的 std::istream ,通常我传入一个 std::ifstream 打开std::ios::binary 选项。

现在我想用一些二进制(十六进制)文字来测试它,但我不知道如何将该数据提供给 std::istream

我在 answer 中尝试过类似的东西

struct membuf : std::streambuf
{
membuf(char* begin, char* end)
{
this->setg(begin, begin, end);
}
};

int main()
{
char buffer[] = "0a0b0c0d000000480000000000420410000";

membuf sbuf(buffer, buffer + sizeof(buffer) - 1);
std::istream in(&sbuf);

deserialize(in);
}

失败是因为该数据未以二进制形式读取/输入。

我该怎么做?

最佳答案

buffer 中没有任何二进制数据,只有字符。你有一个普通的 C 风格字 rune 字。

要从二进制数据中获取输入,您需要这样的声明:

unsigned char buffer[] = { 0x0a, 0x0b, 0x0c, 0x0d, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x42, 0x04, 0x10, 0x00, 0x00 };

关于c++ - 如何将二进制十六进制文字输入 std::istream?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35042328/

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