2015-04-08 40 views
-1

所以我有一個內存塊填充十六進制值,我想讀取這些十六進制值Ascii。不幸的是,我似乎無法弄清楚如何做到這一點。轉換十六進制到Ascii內存訪問

char* charstring = malloc(sizeof(uint16_t)); 
uint8_t test = 0x65; 
sprintf(charstring, "%x ", test); 
fprintf(Output, "%s", charstring); 
free(charstring); 

這隻給了我一噸「65」,而不是我期待的「e」。 我知道這是一個簡單的問題,但我真的點擊了谷歌首頁上的每一個鏈接,無法找出我的問題!

+1

'char * charstring = malloc(sizeof(uint16_t));'< - 這究竟是什麼?你的字符串終結者在哪裏? –

+0

@squeamishossifrage我在一些谷歌頁面上看到人們傳遞指向sprintf的指針以保存轉換後的十六進制值,所以我創建了自己的。 – Tigger12

回答

5

由於您使用%x作爲格式說明符,因此將字符值更改爲%c即可得到65

請注意,您沒有足夠的空間用於空終止符charstring。修理它。

+0

GAHH,我讀了一個,如果它是X的網站。謝謝你,修好了一切! – Tigger12