我现在有一个数组BYTE *tmp = new BYTE[100],
然后我在这个数组里存储了100个数据,我现在想把这100个
BYTE型的数据保存到一个文本文档中,结果写入文件以后显示是乱码,
请问该怎么转换才能让文件中显示是十进制整数呢?
然后我在这个数组里存储了100个数据,我现在想把这100个
BYTE型的数据保存到一个文本文档中,结果写入文件以后显示是乱码,
请问该怎么转换才能让文件中显示是十进制整数呢?
解决方案 »
- 画图,显示不出来
- 如何修攺combox中数据项中某一项的值?
- 怎样控制控件的位置和大小
- 关于FTP
- 怎么在程序中弹出一个CMD命令行,可以往上边printf呀
- 如何指定本机的一个端口和服务器的端口通讯阿?本机这个端口不用监听的!用bind行吗?
- 哪位大虾有《opengl超级宝典》?
- 如何控制NT SERVICE的启动顺序???
- 控制面板程序如何跟踪啊(VC6.0)
- 设置了REPORT的LISTCTRL怎样改变表头的颜色,如果派生一个CHEADERCTRL,那么怎样与LISTCTRL想关联?那里有原代码可一下栽?
- 在进程地址空间中,每个函数都是共用一个堆栈吗?
- TAB控件里面的子窗口显示位置问题.
比如
CString str;
str.Format("%d", tmp[0]);
然后将这个字符串写入文件
但是如果这么处理
你读取的时候还要转回来
BYTE类型的数据应该是二进制,怎么会是100呢?,肯定也不会是“100”,
用ultraedit打开文件显示十六进制是正确的。
//将图像像素数据写入一个文本文件中
fstream file("原始载体像素值.txt",ios::in|ios::out);
file<<"原始载体像素值为:"<<'\n';
for (j = 0; j < m_nSrcImageHeight; j++)
{
for (i =0; i < m_nSrcImageWidth; i++)
{
file << (int)m_pSrcImageData[j*m_nSrcImageWidth+i]<<'\t';
}
file << endl;
}
file.close();
看来楼主还没理解四楼的意思!既然你明白 BYTE 类型是二进制内容,那写到文件里当然就是二进制数据啦,试问二进制数据怎么可能显示出10进制数呢?首先得把它转换成字符型数据,再写入!
但是你要再理解一点,虽然你申请了100个BYTE数据,而BYTE只占一个字节,但是当你转换成字符数据后,写入的文本就不止100个字节了!
存16进制就用BYTE....
str.Format("%d", tmp[0]);
然后将这个字符串写入文件
但是如果这么处理
你读取的时候还要转回来
void CMFCtestDlg::OnButton3()
{
// TODO: Add your control notification handler code here
BYTE bData[100];
int i = 0;
for (i=0;i<100;i++)
{
bData[i] = i;
}
char bFile[100*5+1];
for (i=0;i<100;i++)
{
sprintf(&bFile[i*5],"0x%02x,",bData[i]);
}
CFile file;
file.Open("test.txt",CFile::modeReadWrite|CFile::modeCreate);
file.Write(bFile,500);
file.Close();
}
楼主,试试这个代码,把十六进制一个一个转成ASCII码放到文件里的,可以生成一个 test.txt 文件,打开可以看到内容的.
就像这样
char bByte[4] = {1,2,3,4};
int a = bByte[0] | (bByte[1]<<8) | (bByte[2]<<16) | (bByte[3]<<24);
又或者
int a = *( (int*)&bByte[0] ) ;结果都是 a = 0x04030201
BYTE bData[100] = {0};
int i = 0;
for (i=0;i<100;i++)
{
bData[i] = i;
}
char szBuf[512] = {0};
char szTmp[10] = {0};
for (i=0;i<100;i++)
{
sprintf(szTmp, "%d ", bData[i]);
strcat(szBuf, szTmp);
} try
{
CFile file;
file.Open("F:\\11.txt",CFile::modeReadWrite|CFile::modeCreate);
file.Write(szBuf,strlen(szBuf));
file.Close();
}
catch (CFileException* e)
{
e->ReportError();
e->Delete();
}
int i= 0;
while (i != 100)
{
pByte[i] = 2*i+1;
i++;
}FILE *pf = fopen("c:\\t.txt","a+");i= 0;
while (i != 100)
{
fprintf(pf,"%d ",pByte[i]);
i++;
}
fclose(pf);
delete []pByte;
BYTE就是0-255
int范围大些罢了
4个byte放一个int,还是1个byte放一个int.都可以.
放的方法与取的方法配合.最后取得你要的数据.