我正在从txt文件中读取字节流。例如: 01000101 =4个字节。
FILE *file;
char buffer_msg[100] = { '0' };
char line[100] = { '0' };
file = fopen("name.txt",'r');
if(file!=NULL)
{
while(fgets(line, sizeof(line), file)!=NULL)
{
strcpy( buffer_msg, line);
}
}然后我将这个buffer_msg传递给一个函数。现在,当我在eclipse中调试,并检查buffer_msg的内存时,它将4字节的数据读取为3031 3030 3031 3031。我的猜测是它正在以这种格式读取我的数据0001 0000 0001 0001。有人能说出发生了什么事吗?我猜文本文件以\r\n结尾。我读错文件了吗?
发布于 2012-03-08 09:24:06
您需要的不是strcpy,而是如下所示:
void parse(char *buffer, char *line) {
while (*line) {
*buffer++ = (hex2char(line[0]) << 4) + hex2char(line[1]);
line += 2;
}
}这将从line中提取两个字节,将十六进制数字转换为整数,并将其存储到buffer的一个字节中。
这将适用于hex2char:
char hex2char(char digit) {
if (digit >= '0' && digit <= '9') {
return digit - '0';
} else if (digit >= 'A' && digit <= 'F') {
return digit - 'A' + 10;
} else if (digit >= 'a' && digit <= 'f') {
return digit - 'a' + 10;
}
return -1;
}https://stackoverflow.com/questions/9611217
复制相似问题