如何数据保存成16进制

wxdcxp 2009-12-21 08:55:55

00 44 4D 49 20 31 00 00 00 00 00 00 00 44 4D 49
20 32 00 00 00 00 00 00 00 44 4D 49 20 33 00 00
00 00 00 00 00 44 4D 49 20 34 00 00 00 00 00 00
00 56 49 00 00 00 00 00 00 00 00 00 00 2D 56 69
64 65 6F 20 31 00 00 00 00 2D 56 69 64 65 6F 20
32 00 00 00 00 2D 56 69 64 65 6F 20 33 00 00 00
00 53 42 00 00 00 00 00 00 00 00 00 00 00 00 02




00000000h: 00 44 4D 49 20 31 00 00 00 00 00 00 00 44 4D 49
00000001h: 20 32 00 00 00 00 00 00 00 44 4D 49 20 33 00 00
00000002h: 00 00 00 00 00 44 4D 49 20 34 00 00 00 00 00 00
00000003h: 00 56 49 00 00 00 00 00 00 00 00 00 00 2D 56 69
00000004h: 64 65 6F 20 31 00 00 00 00 2D 56 69 64 65 6F 20
00000005h: 32 00 00 00 00 2D 56 69 64 65 6F 20 33 00 00 00
00000006h: 00 53 42 00 00 00 00 00 00 00 00 00 00 00 00 02


例如我有以上数据需要保存成16进制格式的文件
需要怎么保存?
...全文
751 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
周药师 2009-12-21
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 wxdcxp 的回复:]
引用 2 楼 zhouzhangkui 的回复:
“例如我有以上数据需要保存成16进制格式的文件 ”
这里一个保存dat文件的例子
C/C++ code
  BYTE  ucpBuffer[1000]={0};
  ucpBuffer[0]=0xAA ;
  ucpBuffer[1]=0x55 ;
  ucpBuffer[2]=0xAA ;
  ucpBuffer[3]=0x55 ;
  FILE*fpFile;if ((fpFile=  fopen  ("D:\\zhou.dat","ab+"))==  NULL)return;// sizeof  _MAX_PATH  fwrite (ucpBuffer,1000,1,  fpFile);
  fclose(fpFile);


我试了下用你上面的代码就可以了
谢啦
[/Quote]
看来我还没有老 一猜就对
wxdcxp 2009-12-21
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zhouzhangkui 的回复:]
“例如我有以上数据需要保存成16进制格式的文件 ”
这里一个保存dat文件的例子
C/C++ code
BYTE ucpBuffer[1000]={0};
ucpBuffer[0]=0xAA ;
ucpBuffer[1]=0x55 ;
ucpBuffer[2]=0xAA ;
ucpBuffer[3]=0x55 ;
FILE*fpFile;if ((fpFile= fopen ("D:\\zhou.dat","ab+"))== NULL)return;// sizeof _MAX_PATH fwrite (ucpBuffer,1000,1, fpFile);
fclose(fpFile);
[/Quote]

我试了下用你上面的代码就可以了
谢啦
paulpeath 2009-12-21
  • 打赏
  • 举报
回复
wxdcxp:
如下函数实现您说要的功能,代码很奇妙。

char* convert( unsigned long Value )
{
static char Buffer[sizeof( unsigned long ) * 2 + 1];

int i;
for( i = sizeof( unsigned long ) * 2 - 1; i >= 0; --i )
{
Buffer[i] = "0123456789ABCDEF"[Value % 16];
Value /= 16;
}

return Buffer;
}
周药师 2009-12-21
  • 打赏
  • 举报
回复
不懂你啥意思
看来我老了
wxdcxp 2009-12-21
  • 打赏
  • 举报
回复
也许我的问题应该问成如何以16进制格式保存到文件?
wxdcxp 2009-12-21
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 zhouzhangkui 的回复:]
引用 4 楼 wxdcxp 的回复:
引用 2 楼 zhouzhangkui 的回复:
“例如我有以上数据需要保存成16进制格式的文件 ”
这里一个保存dat文件的例子
C/C++ code
  BYTE  ucpBuffer[1000]={0};
  ucpBuffer[0]=0xAA ;
  ucpBuffer[1]=0x55 ;
  ucpBuffer[2]=0xAA ;
  ucpBuffer[3]=0x55 ;
  FILE*fpFile;if ((fpFile=  fopen  ("D:\\zhou.dat","ab+"))==  NULL)return;// sizeof  _MAX_PATH  fwrite (ucpBuffer,1000,1,  fpFile);
  fclose(fpFile);


以上数据是从串口读出来的,已经保存成文件了,现在的问题是如何保存成16进制的。
因为EEPROM烧入的文件是.bin的所以一定要保存成16进制的才可以烧入

那就把你从串口得出的数据 直接弄成十六进制字符串写入文本
[/Quote]

关键就是怎么弄成十六进制字符串写入文本啊?
有什么函数吗?

以下是我将串口接收到的数据筛选后保存到StringGrid,然后从StringGrid把数据保存成bin档。
现在问题是怎么直接弄成16进制的


int RowCount,ColCount;
AnsiString Grid_String,Str_To_Int;
Grid_String = "";
TStringList *List=new TStringList();
for( ColCount = 1;ColCount<513;ColCount++)
{

for(RowCount=1;RowCount<17;RowCount++)
{
Grid_String += StrToInt("$"+StringGrid1->Cells[RowCount][ColCount]);
//Grid_String += StringGrid1->Cells[RowCount][ColCount];

}
//List->Add(Grid_String);
}

List->Add(Grid_String);
List->SaveToFile("Zoran_EEPROM_Data.bin");

delete List;
周药师 2009-12-21
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 wxdcxp 的回复:]
引用 2 楼 zhouzhangkui 的回复:
“例如我有以上数据需要保存成16进制格式的文件 ”
这里一个保存dat文件的例子
C/C++ code
  BYTE  ucpBuffer[1000]={0};
  ucpBuffer[0]=0xAA ;
  ucpBuffer[1]=0x55 ;
  ucpBuffer[2]=0xAA ;
  ucpBuffer[3]=0x55 ;
  FILE*fpFile;if ((fpFile=  fopen  ("D:\\zhou.dat","ab+"))==  NULL)return;// sizeof  _MAX_PATH  fwrite (ucpBuffer,1000,1,  fpFile);
  fclose(fpFile);


以上数据是从串口读出来的,已经保存成文件了,现在的问题是如何保存成16进制的。
因为EEPROM烧入的文件是.bin的所以一定要保存成16进制的才可以烧入
[/Quote]
那就把你从串口得出的数据 直接弄成十六进制字符串写入文本
wxdcxp 2009-12-21
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zhouzhangkui 的回复:]
“例如我有以上数据需要保存成16进制格式的文件 ”
这里一个保存dat文件的例子
C/C++ code
BYTE ucpBuffer[1000]={0};
ucpBuffer[0]=0xAA ;
ucpBuffer[1]=0x55 ;
ucpBuffer[2]=0xAA ;
ucpBuffer[3]=0x55 ;
FILE*fpFile;if ((fpFile= fopen ("D:\\zhou.dat","ab+"))== NULL)return;// sizeof _MAX_PATH fwrite (ucpBuffer,1000,1, fpFile);
fclose(fpFile);
[/Quote]

以上数据是从串口读出来的,已经保存成文件了,现在的问题是如何保存成16进制的。
因为EEPROM烧入的文件是.bin的所以一定要保存成16进制的才可以烧入
wxdcxp 2009-12-21
  • 打赏
  • 举报
回复
用UltraEdit以16进制显示,显示的内容是已经被转换过的
例如0会转化为30,空格转换为20
周药师 2009-12-21
  • 打赏
  • 举报
回复
“例如我有以上数据需要保存成16进制格式的文件 ”
这里一个保存dat文件的例子

BYTE ucpBuffer[1000]={0};
ucpBuffer[0] =0xAA ;
ucpBuffer[1] =0x55 ;
ucpBuffer[2] =0xAA ;
ucpBuffer[3] =0x55 ;
FILE *fpFile;

if ((fpFile = fopen ("D:\\zhou.dat", "ab+")) == NULL)
return; // sizeof _MAX_PATH
fwrite (ucpBuffer, 1000, 1, fpFile);
fclose(fpFile);
xjq2003 2009-12-21
  • 打赏
  • 举报
回复
很简单,你直接保存到文件,使用UEDIT打开就可以使用十六进制显示

或者你把你的数据,字符转换成字符串保存

String ss=inttohex(xx,2);

13,826

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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