在我的代码中,我有全局缓冲区,它接收十六进制数据。这个十六进制数据只是英特尔十六进制格式的编译器输出。我想从数据中删除intel Hex头和CRC位,将其转换为二进制数据,并写入我的应用程序flash addres。为此,我的问题是
要将数据从英特尔十六进制转换为二进制,我必须一次从缓冲区读取一行并进行转换。 为了读取一行格式缓冲区,我将代码编写为示例
char str[]; //buffer whitch hold Hex file
char readBuffer[128]; //buffer to read data
char * pch;
int iTotalShift = 0;
int iShift = 0;
int iSize = 0;
while(iSize < SizeOfBuffer)
{
pch = strstr (&str[iTotalShift],"\n");
//this \n may change to actual hex value of \n i.e.0x0D0A
iShift = (pch - &str[iTotalShift]);
memcpy(&readBuffer[0], &str[iTotalShift], iShift );
iTotalShift = iTotalShift + (iShift + 2);
iSize = iTotalShift;
}
有没有更好的方法来使用c代码,请分享....
提前致谢