首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从C中的文本文件中读取十六进制数据

如何从C中的文本文件中读取十六进制数据
EN

Stack Overflow用户
提问于 2018-10-14 19:21:20
回答 1查看 672关注 0票数 1

我试图读取一个带有CAN数据的文本文件,该文件的格式如下:

XL_CAN_EV_TAG_RX_OK ch:0 t=51165282304 id:98FF5C80 dlc:7000000040000E0 XL_CAN_EV_TAG_RX_OK ch:0 t=51172728832 id:98FF1480 dlc:7 FFFFFFAD7C1CFF XL_CAN_EV_TAG_RX_OK ch:0 t=51173007360 id:98FF1080 dlc:7 FFFFE30C0E01FF XL_CAN_EV_TAG_RX_OK ch:0 t=51173285888 id:98FF1180 dlc:7 FFFF9706FEFFFB XL_CAN_EV_TAG_RX_OK ch:0 t=51173564416 id:98FF1280 dlc:7 FFFF9706FEFFFB

如上所示,我必须读取CANid和CANDATA,我设法使用以下方法读取CANID:

代码语言:javascript
复制
unsigned int hex = 0; 
fscanf(fr, "%X", &hex); 
printf(" %X ", hex);

我使用c= fgetc(fr);直到c读取第二个":“,而十六进制则读取canid罚款。

但是,当我必须使用相同的代码"fscaf“读取数据时,它只读取最后7个数据--例如,我得到如下结果:

40000e0 D7C1CFF C0E01FF 6FEFFFB 6FEFFFB

这就是问题所在。我发现的另一种选择是把它读成焦炭。

如果我使用getc读取,我会得到char格式的数据,我不知道如何将它转换为十六进制,并且它分别读取每个字母,我必须将它们组合起来,然后具体地将它们转换为int类型(十六进制),然后将其发送到数组中,如下所示:

data=FF;data1=FF;data2=FF;data3=AD;data4=7C;data5=1C;data6=FF;

我被困在这里已经两天了,搜索了所有的东西,尝试了所有的东西,似乎什么都没有用,你能帮我解决这个问题吗?谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-14 19:25:02

您正在读取unsigned int并将其存储到unsigned int中。unsigned int是32位,您的十六进制值是7字节或56位长。你需要一个64位的容器。您将需要使用unsigned long long int并使用%llX读写它们。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52806266

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档