簡體   English   中英

如何從C中的文本文件讀取十六進制數據

[英]How to read a hex data from a text file in C

我正在嘗試讀取具有CAN數據的文本文件,該文件的格式如下所示:

XL_CAN_EV_TAG_RX_OK ch:0 t = 51165282304 id:98FF5C80 dlc:7 000000040000E0 XL_CAN_EV_TAG_RX_OK ch:0 t = 51172728832 id:98FF1480 dlc:7 FFFFFFAD7C1CFF XL_CAN_EV_TAG_RX_FF_7_FF51_FFF_7_FF51_FE_TAG_RX51_OK:00 FF:0C_FF_EFF_TAG_RX_OK_CH_F00:0173 = 1FF_CFF_EFF_TAG_RX51_OK_CFF:0173 :98FF1180 dlc:7 FFFF9706FEFFFB XL_CAN_EV_TAG_RX_OK ch:0 t = 51173564416 id:98FF1280 dlc:7 FFFF9706FEFFFB

我必須如上所述讀取CANid和CANDATA,我設法使用讀取了CANID:

unsigned int hex = 0; 
fscanf(fr, "%X", &hex); 
printf(" %X ", hex);

我使用c = fgetc(fr); 直到c讀取第二個“:”,十六進制讀取犬科動物罰款。

但是,當我不得不使用相同的代碼“ fscaf”讀取數據時,例如,它僅讀取最后7個數據,我得到如下結果:

40000e0 D7C1CFF C0E01FF 6FEFFFB 6FEFFFB

這就是問題。 我發現的替代方法是將其讀取為char。

如果我使用getc進行讀取,則會以char格式獲取數據,但我不確定如何將其轉換為十六進制,並且它會分別讀取每個字母,因此我必須將它們組合在一起,然后將其轉換為int類型(十六進制) ),然后將其發送到數組,如下所示:

數據[0] = FF; 數據[1] = FF; 數據[2] = FF; 數據[3] = AD; 數據[4] = 7C; 數據[5] = 1C; 數據[6] = FF;

自從兩天以來,我一直被困在這里,用Google搜索一切,嘗試了一切,似乎沒有任何效果,請您幫我一下。 謝謝。

您正在讀取unsigned int並將其存儲到unsigned int unsigned int是32位,您的十六進制值是7個字節或56位長。 您需要一個64位的容器。 您將要使用unsigned long long int並使用%llX對其進行%llX

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM