16,472
社区成员
发帖
与我相关
我的任务
分享
ifstream inBin(_T("xxx.bin"),ios::in|ios::binary); //二进制打开文件 Yes
ASSERT(inBin); //是否正常打开
int length;
char * buffer;
// get length of file:
inBin.seekg (0, ios::end); // 这里设置文件指针要怎么理解呀?从0开始,偏移到文件尾吗?
length = inBin.tellg(); //这!!
inBin.seekg (0, ios::beg); //文件指针又到开始位置? //把文件指针放到end后获取位置,在还原到开始位置已被之后读取做准备
// allocate memory:
buffer = new char [length];
// read data as a block:
inBin.read (buffer,length);
DWORD *dwData = (DWORD *)buffer; //这里转换后dwData是个十进制值,不清楚是如何得来的//指针类型的转换
int nWorkingLength;
nWorkingLength = length/4;
DWORD dwResult;
TCHAR szResult[1024];
for (int i = 0; i < nWorkingLength; i++)
{
dwResult = * (dwData+i);
sprintf(szResult,_T("%d:0x%x"),i, dwResult); //这样的话szResult不也是字符型的吗?//类型是表现在输出格式上的也就是字串,计算机中数据都是二进制表示的。
}
不太清楚你用的什么类.可以指教下吗?
我用[C ODE]和[/ C ODE]后代码为什么就没了啊?
ifstream inBin(_T("xxx.bin"),ios::in|ios::binary); //二进制打开文件
ASSERT(inBin); //是否正常打开
int length;
char * buffer;
// get length of file:
inBin.seekg (0, ios::end); // 这里设置文件指针要怎么理解呀?从0开始,偏移到文件尾吗?
length = inBin.tellg(); //这!!
inBin.seekg (0, ios::beg); //文件指针又到开始位置?
// allocate memory:
buffer = new char [length];
// read data as a block:
inBin.read (buffer,length);
DWORD *dwData = (DWORD *)buffer; //这里转换后dwData是个十进制值,不清楚是如何得来的
int nWorkingLength;
nWorkingLength = length/4;
DWORD dwResult;
TCHAR szResult[1024];
for (int i = 0; i < nWorkingLength; i++)
{
dwResult = * (dwData+i);
sprintf(szResult,_T("%d:0x%x"),i, dwResult); //这样的话szResult不也是字符型的吗?
}
unsigned char buf[4];
m_File.Read((char *)buf,4);
DWORD dwWord;
dwWord=buf[0];
dwWork<<=8;
dwWord+=buf[1];
dwWork<<=8;
dwWord+=buf[2];
dwWork<<=8;
dwWord+=buf[3];
unsigned char buf[4];
m_File.Read((char *)buf,4);
DWORD dwWord;
dwWord=buf[0];
dwWork<<=4;
dwWord+=buf[1];
dwWork<<=4;
dwWord+=buf[2];
dwWork<<=4;
dwWord+=buf[3];
ifstream inBin(_T("xxx.bin"),ios::in|ios::binary);
ASSERT(inBin);
int length;
char * buffer;
// get length of file:
inBin.seekg (0, ios::end);
length = inBin.tellg();
inBin.seekg (0, ios::beg);
// allocate memory:
buffer = new char [length];
// read data as a block:
inBin.read (buffer,length);
DWORD *dwData = (DWORD *)buffer;
int nWorkingLength;
nWorkingLength = length/4;
DWORD dwResult;
TCHAR szResult[1024];
for (int i = 0; i < nWorkingLength; i++)
{
dwResult = * (dwData+i);
sprintf(szResult,_T("%d:0x%x"),i, dwResult);
}