我将如何获取输入信号并与十六进制一起使用?像这样吗
Cin >> hex >> mychar;

如何以十六进制打印正确的值?
说在0x16时,字节为FF或255个无符号8bit(十进制?)

fstream mystream;
mystream.seekp(0x16);
long myvar;
myvar=mystream.tellp();
cout<<"Value at offset 0x16: "<<myvar;

假设自从我以二进制模式打开文件以来,它会打印22 im,这就是为什么它以22的FF值打印22就像2222222等。

是否有正确的数据类型可用于在特定偏移量处打印值(我尝试了long和char和int,但仍产生22。)还是我打印错误?我在Google上进行了搜索,但是在这方面找不到任何帮助,但是我确实注意到,建议使用二进制格式打开文件以进行十六进制编辑。

最佳答案

您的代码有两个问题:

  • ostream::seekp设置“放置”指针,即一个人写入数据的位置,而不是一个人读取数据的位置。使用istream::seekg设置“获取”指针
  • ostream::tellp不执行任何I / O。它仅报告“put”指针的值,而实际上不获取存储在此处的数据。您的意思是使用istream::get

  • 您的程序正在打印十进制数字22,它等于十六进制数字0x16。这是因为seekp将放置指针设置为0x16,而tellp仅报告放置指针的值-0x16!

    试试这个代码:
    fstream mystream;
    mystream.seekg(0x16);
    int myvar;
    myvar=mystream.get();
    cout<<"Value at offset 0x16: "<<myvar << "\n";
    

    关于c++ - 接受fstream::seekp和fstream::put的输入,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7577635/

    10-10 16:20