>我正在尝试读取带有CAN数据的文本文件,文件的格式是这样的:
XL_CAN_EV_TAG_RX_OK 通道:0 t=51165282304 编号:98FF5C80 dlc:7 000000040000E0 XL_CAN_EV_TAG_RX_OK 通道:0 t=51172728832 编号:98FF1480 DLC:7 FFFFFFAD7C1CFF XL_CAN_EV_TAG_RX_OK 通道:0 T=51173007360 编号:98FF1080 DLC:7 FFFFE30C0E01FF XL_CAN_EV_TAG_RX_OK 通道:0 t=51173285888 编号:98FF1180 dlc:7 FFFF9706FEFFFB XL_CAN_EV_TAG_RX_OK 通道:0 T=51173564416 编号:98FF1280 DLC:7 FFFF9706FEFFFB
我必须读取CANid和CANDATA,如上所示,我设法使用以下方法读取CANIC:
unsigned int hex = 0;
fscanf(fr, "%X", &hex);
printf(" %X ", hex);
我使用 c = fgetc(fr(; 直到 c 读取第二个 ":" 并且十六进制读取犬科动物。
但是,当我必须使用相同的代码"fscaf"读取数据时,它只读取最后 7 个数据,例如,我得到这样的结果:
40000e0
D7C1CFF
C0E01FF
6FEFFFB
6FEFFFB
这就是问题所在。我找到的替代方法是将其读作字符。
如果我使用 getc 读取,我会以 char 格式获取数据,我不确定如何将其转换为十六进制,而且它单独读取每个字母,我必须将它们组合在一起,然后将其转换为 int 类型(十六进制(并将其发送到数组,如下所示:
数据[0]=FF; 数据[1]=FF; 数据[2]=FF; 数据[3]=AD; 数据[4]=7C; 数据[5]=1C;数据[6]=FF;
我从两天开始就被困在这里,谷歌搜索了所有内容并尝试了所有内容,似乎没有任何效果,你能帮我解决这个问题吗?谢谢。
您正在阅读unsigned int
并存储到unsigned int
中。unsigned int
为 32 位,十六进制值为 7 字节或 56 位长。您需要一个 64 位容器。您需要使用unsigned long long int
并使用%llX
读取/写入它们。