怎么样把一组数以十六进制的形式写到文件里?

tengye19840704 2008-08-08 09:55:23
怎么把下面这个DATA.写到文件里,,这个DATA是以参数的形式传到函数里的...
char data[6] = {0x68,0x04,0x43,0x00,0x00,0x00};
wriFile.write ......
...全文
204 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
e_sharp 2008-08-08
  • 打赏
  • 举报
回复
学习
tengye19840704 2008-08-08
  • 打赏
  • 举报
回复
回楼上..你输出到文本文件里..不少后面的0??
我这里后面两位没了
windboyzsj 2008-08-08
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 tengye19840704 的回复:]
还有一个问题...这个长度是不固定的,我用sizeof(data);为什么不可以啊.位数不对
char data[6] = {0x68,0x04,0x43,0x00,0x00,0x00};

for(int i=0;i <sizeof(data);i++)
{
wriFile < <"0x" < <setfill('0') < <setw(2) < <hex < <int(data[i]);
wriFile.put(',');
//wriFile < <"0x" < <hex < <intdata
}
[/Quote]

我试了没问题啊
yyyapple 2008-08-08
  • 打赏
  • 举报
回复
for(int i=0;i <sizeof(data)/sizeof(char);i++)
{
wriFile < <"0x" < <setfill('0') < <setw(2) < <hex < <int(data[i]);
wriFile.put(',');
//wriFile < <"0x" < <hex < <intdata
}
tengye19840704 2008-08-08
  • 打赏
  • 举报
回复
还有一个问题...这个长度是不固定的,我用sizeof(data);为什么不可以啊.位数不对
char data[6] = {0x68,0x04,0x43,0x00,0x00,0x00};

for(int i=0;i<sizeof(data);i++)
{
wriFile<<"0x"<<setfill('0')<<setw(2)<<hex<<int(data[i]);
wriFile.put(',');
//wriFile<<"0x"<<hex<<intdata
}
yyyapple 2008-08-08
  • 打赏
  • 举报
回复
fout<<"0X"<<setfill('0')<<setw(2)<<hex<<data[i]<<", "
zhkefa 2008-08-08
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 tengye19840704 的回复:]
回五楼.谢谢高手你..
有个问题.打印出来是这个样子...丢了一些0..
2008/08/08 10:13:56;Info;3333;0x68,0x4,0x43,0x0,0x0,0x0,
怎么样可以把数据打完整..跟以下开式是一样的??
0x68,0x04,0x43,0x00,0x00,0x00
[/Quote]

cout.fill('0'); //用0来填充
cout.width(4); //控制输出几位

看能不能解决,,
tengye19840704 2008-08-08
  • 打赏
  • 举报
回复
呵呵..没事没事...你写的是什么啊.多学一个是一个.呵呵..

你看下11楼的回复..看看高手你能帮助我解决下么?
babyvox1999 2008-08-08
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 tengye19840704 的回复:]
写不进去..写进去是乱码的.
[/Quote]
你用什么打开看的也是个问题。。。
wangdeqie 2008-08-08
  • 打赏
  • 举报
回复
看错了。。。。楼主是要以16进制写入啊,sorry
wangdeqie 2008-08-08
  • 打赏
  • 举报
回复

#include<stdio.h>
#include <conio.h>
#include <process.h>
void main()
{
char data[6] = {0x68,0x04,0x43,0x00,0x00,0x00};

FILE *fp;
if((fp=fopen("1.txt","at+"))==NULL)
{
printf("Cannot open file strike any key exit!");
getch();
exit(1);
}

for (int i=0;i<6;i++)
{
fputs(&data[i],fp);
}


rewind(fp);
char ch=fgetc(fp);
while(!feof(fp))
{
putchar(ch);
ch=fgetc(fp);
}
printf("\n");
fclose(fp);
}
tengye19840704 2008-08-08
  • 打赏
  • 举报
回复
回五楼.谢谢高手你..
有个问题.打印出来是这个样子...丢了一些0..
2008/08/08 10:13:56;Info;3333;0x68,0x4,0x43,0x0,0x0,0x0,
怎么样可以把数据打完整..跟以下开式是一样的??
0x68,0x04,0x43,0x00,0x00,0x00
tangyulong1214 2008-08-08
  • 打赏
  • 举报
回复
使用fprintf(handle,"格式字符串",数据);
循环即可...
yyyapple 2008-08-08
  • 打赏
  • 举报
回复
char data[6] = {0x68,0x04,0x43,0x00,0x00,0x00}; 

FILE* F=0;
if((F=fopen("D:\\aA.txt", "w"))!=0)
{
int i=0;
for(;i<(sizeof(data)/sizeof(char)-1);i++)
{
fprintf(F, "0x%02x, ", data[i]);
}
fprintf(F, "0x%02x", data[i]);
fclose(F);
}
K行天下 2008-08-08
  • 打赏
  • 举报
回复
for(int i=0;i<6;i++)
fprintf(fp,"%#x\n",data[i]);
hai040 2008-08-08
  • 打赏
  • 举报
回复
用ue查看
冷月清晖 2008-08-08
  • 打赏
  • 举报
回复
sprintf(Msg,"控制命令[%s]至[%s].",Hex2Str(b,7));修正:
char Msg[256]={0};
sprintf(Msg,"控制命令[%s].",Hex2Str(b,7));
脚跟着地 2008-08-08
  • 打赏
  • 举报
回复

#include<iostream>
#include<fstream>
using namespace std;

int main()
{
ofstream fout("data.txt");
int data[6] = {0x68,0x04,0x43,0x00,0x00,0x00}; //应是int型而不是char型
for(int i=0;i<6;i++)
fout<<hex<<data[i]<<' ';//以十六进制形式写入
fout.close();
}

冷月清晖 2008-08-08
  • 打赏
  • 举报
回复
16进制数 转换字符串

用这个函数吧

char g_aHex2Str[MAX_PATH*4];
LPSTR Hex2Str(BYTE *Buff,int dwLen,BOOL bSpace)
{
BYTE Width = 0;
if(bSpace)
{
Width = 3;
}
else
{
Width =2;
}
char s[10];
if((dwLen *Width +1) > MAX_PATH*4)
{
return 0;
}
for (int i = 0; i < dwLen; i ++)
{
if(bSpace)
{
wsprintf(s, "%02x ", (BYTE)(*(Buff + i)));
}
else
{
wsprintf(s, "%02x", (BYTE)(*(Buff + i)));
}
strncpy(g_aHex2Str + (i * Width), s, Width);
}
g_aHex2Str[i*Width]='\0';
return g_aHex2Str;
}


例子
BYTE b[7];
b[0]=0xFF;
b[1]=0x01;
b[2]=0x01;
b[3]=0x01;
b[4]=0x01;
b[5]=0x01;
b[6]=(b[1]+b[2]+b[3]+b[4]+b[5])%0x100 ;//校验位
sprintf(Msg,"控制命令[%s]至[%s].",Hex2Str(b,7));
yyyapple 2008-08-08
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 tengye19840704 的回复:]
写不进去..写进去是乱码的.
[/Quote]
转换成字符串,以文本格式写入
加载更多回复(3)

64,639

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧