[英]hexadecimal string to int conversion in C
我有一個帶有十六進制值的文本文件,在fscanf一個值之后,我需要知道如何將其從十六進制字符串轉換為int。 然后將其轉換回十六進制字符串以供以后打印。 有人知道算法嗎? 謝謝。
您應該使用%x
格式說明符而不是%s
來讀取值。 這將以十六進制整數形式讀取數據。
例如,如果您的文件如下所示:
ff3c 5a cb2d
然后,您可以讀取以下三個值:
int a, b, c;
fscanf(fp, "%x %x %x", &a, &b, &c); // a = 0xff3c, b = 0x5a, c = 0xcb2d
在fscanf
和fprintf
字符串中使用%x
格式說明符。
正如馬龍上面所說:
int a, b, c;
fscanf(fp, "%x %x %x", &a, &b, &c);
打印為十六進制字符串
fprintf(fp, "%x %x %x", a, b, c);
我認為您可能對計算機存儲int
類型變量的方式感到困惑。 它們不會存儲在10進制數中。它們肯定以二進制存儲,您肯定知道。 這意味着為int
分配十六進制值沒有什么特別的。 不會有任何不同的存儲方式。 使用%x
只是表明您希望程序理解所給出的數字是十六進制數字(例如,因此它知道將字符串“ 10”存儲為10000(2)而不是1010(2)。與輸出相同:如果變量a
具有二進制10000(2)並使用%x
打印,則程序知道輸出應該為10
;如果使用%d
,則知道輸出應該為16
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.