簡體   English   中英

在C中將十六進制字符串轉換為int

[英]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

fscanffprintf字符串中使用%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.

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