二进制输入输出问题

用户3861918

我正在尝试了解二进制文件的工作原理。当我输入 127 以上的任何内容时,它给了我错误的答案。请解释为什么会发生这种情况..

int x[10] = {124,45,21,35,45,25,26,254,12,32};

fstream BCD("Random.bin", ios::binary | ios::out  | ios::trunc);

if (!BCD.is_open()) {
    cout << "opps<<";

}
else
{
    for (int i = 0; i < 10; i++) {
        BCD.put(x[i]);
    }

}
BCD.close();

 int out[10];
fstream file("Random.bin", ios::binary | ios::in);

 char C;
int i = 0;
while (file.good())
{
    file.get(C);
    out[i] = ( int)C ;
    i++;
}

我只想将 0 - 255 之间的一些值存储为二进制并回读,如果我访问某个文件,我如何获得文件大小有没有办法首先找到它的大小并根据大小读取数据。我只知道上面代码中的一种方式,不知道我做得对不对,如果我错了请纠正我

麦克斯蒂夫

问题是在读取时,该值被视为有符号或负数。您需要使用:-

char C;
int i = 0;
while (file.good())
{
    file.get(C);
    if( file.good() ){
        out[i] = static_cast<int>( static_cast<unsigned char>( C ) );
        i++;
    }
}

不幸的是,正如我之前认为的那样fstream::get只需要 char,所以我们需要它是一个char.

所以我们把它读作 a char,然后将其重新解释为unsigned char

最后将 C 强制转换(int)为 C++ 强制转换static_cast以获得整数值(有符号,但为正)。

当读取超出最后一个元素时,还需要进行检查以确保缓冲区不会溢出

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

二进制输出c ++

来自分类Dev

二进制输出格式

来自分类Dev

二进制输出c ++

来自分类Dev

仅二进制格式输入

来自分类Dev

UnicodeDecodeError读取二进制输入

来自分类Dev

如何输入二进制数

来自分类Dev

UnicodeDecodeError读取二进制输入

来自分类Dev

读取二进制数据问题

来自分类Dev

二进制转换问题

来自分类Dev

将结构对象输出到二进制文件,并以C的形式从中输入

来自分类Dev

十进制转二进制错误输出

来自分类Dev

在C ++中将二进制字符串输出到二进制文件

来自分类Dev

C ++:从二进制文件读取输入时出现问题

来自分类Dev

VHDL-BCD到二进制输入缓冲区-显示结果的问题

来自分类Dev

二进制/十六进制浮点输入

来自分类Dev

在 C 中将十进制转换为二进制时遇到问题。没有输出

来自分类Dev

XlsxWriter是否可以提供二进制相同的输出?

来自分类Dev

使用PHP标头输出二进制数据

来自分类Dev

GNU sort -u输出二进制字符

来自分类Dev

python def函数的二进制输出

来自分类Dev

在PowerShell管道上输出二进制数据

来自分类Dev

如何对二进制Lambda演算的输出建模?

来自分类Dev

为什么我的函数的输出为二进制?

来自分类Dev

如何获得openssl_decrypt二进制输出?

来自分类Dev

为什么Xor二进制输出编号

来自分类Dev

Keras中二进制分类的输出层

来自分类Dev

我的二进制文件以相反的顺序输出

来自分类Dev

PHP从执行二进制文件获取输出

来自分类Dev

C ++使用“ putchar”以二进制形式输出单词