读取并输出二进制文件(C++)中位置的字节
Reading and outputting byte at position in binary file (C++)
我想从二进制(.bin)文件中读取一组256字节的数据,并将其存储到缓冲区中。然后,我想将这些字节中的每一个移动到一个由char向量组成的向量中。此外,我想读取向量中的char值,并获得该字节的二进制值的相应整数值。我就是这样处理的:
typedef unsigned char BYTE;
vector< vector<BYTE> > pMem (256, vector<BYTE> (256, '0'));
ifstream binStream;
binStream.open("BACKING_STORE.bin", ios::binary | ios::in );
// allocate memory:
char * buffer = new char [256];
binStream.seekg(0, binStream.beg);
binStream.read(buffer, 256);
for( i = 0; i < 256; i++ )
pMem[0][i] = buffer[i];
for( i = 0; i < 256; i++ )
{
cout << "Physical memory char contents at 0[" << i << "]: " << pMem[0][i] << endl;
int x = pMem[0][i];
cout << "Physical memory integer contents at 0[" << i << "]: " << x << endl;
}
但当我打印出这些值时,我会得到这样的结果:
Physical memory char contents at 0[237]:
Physical memory integer contents at 0[237]: 0
Physical memory char contents at 0[238]:
Physical memory integer contents at 0[238]: 0
Physical memory char contents at 0[239]: ;
Physical memory integer contents at 0[239]: 59
Physical memory char contents at 0[240]:
Physical memory integer contents at 0[240]: 0
Physical memory char contents at 0[241]:
Physical memory integer contents at 0[241]: 0
Physical memory char contents at 0[242]:
Physical memory integer contents at 0[242]: 0
Physical memory char contents at 0[243]: <
Physical memory integer contents at 0[243]: 60
Physical memory char contents at 0[244]:
Physical memory integer contents at 0[244]: 0
Physical memory char contents at 0[245]:
Physical memory integer contents at 0[245]: 0
Physical memory char contents at 0[246]:
Physical memory integer contents at 0[246]: 0
Physical memory char contents at 0[247]: =
Physical memory integer contents at 0[247]: 61
Physical memory char contents at 0[248]:
Physical memory integer contents at 0[248]: 0
Physical memory char contents at 0[249]:
Physical memory integer contents at 0[249]: 0
Physical memory char contents at 0[250]:
Physical memory integer contents at 0[250]: 0
Physical memory char contents at 0[251]: >
Physical memory integer contents at 0[251]: 62
Physical memory char contents at 0[252]:
Physical memory integer contents at 0[252]: 0
Physical memory char contents at 0[253]:
Physical memory integer contents at 0[253]: 0
Physical memory char contents at 0[254]:
Physical memory integer contents at 0[254]: 0
Physical memory char contents at 0[255]: ?
Physical memory integer contents at 0[255]: 63
这显然是错误的输出。有人能解释一下我做错了什么,以及如何做到这一点吗?
当您有:时
char c = 'a';
std::cout << c << std::endl;
输出将是
a
当c
的值对应于一个非打印字符时,输出因系统而异。在您的情况下,您得到的是空白输出。
如果你想打印'a'
的整数表示,你必须强制转换它。
std::cout << (int)c << std::endl;
或
int x = c;
std::cout << x << std::endl;
我希望这就是你需要的全部解释。
相关文章:
- 从不同线程使用int64的不同字节安全吗
- 将值指定给向量(2D)的向量中的某个位置
- 将Integer转换为4字节的unsined字符矢量(按大端字节顺序)
- 使用Unreal C++获取VR耳机的世界位置/方向
- 写入位置0x0000000C时发生访问冲突
- 在UNIX系统中使用DIR查找文件的字节大小
- 如何将两个不同矢量的同一位置的两个元素组合在一起
- GL_SHADERSTORAGE_BUFFER位置是否与其他着色器位置冲突
- 读取从ifstream中n的位置n开始的二进制字节
- 如何从不同部分读取二进制文件的var?(例如,2个字节,另一个位置有2个字节?)
- 读取并输出二进制文件(C++)中位置的字节
- 从SIMD矢量中提取集合字节的位置
- 我的字节数组到十六进制字符串转换器有什么问题,或者为什么它在写入文件时会在某个位置后剪切符号?
- 如何在__m128i的特定位置加载字节
- 将字节数复制到内存中的某个位置
- 使用"CS:EIP 上的字节数"找出崩溃发生的位置
- 在C++中读取文件某个位置的字节
- 是否使用char*作为字节在内存中的位置
- c++ fseek:是位置0或1的第一个字节
- 如何在Objective-C/C/C++中转换字符和字节的位置