我有一個文本文件的十六進制值後,我fscanf值我需要知道如何可以將其從十六進制字符串轉換爲int。然後將其轉換回十六進制字符串以供以後打印。任何人都知道這個算法?謝謝。十六進制字符串到int轉換在C
0
A
回答
4
您應該使用%x
格式說明符代替%s
來讀取您的值。這將讀取數據爲十六進制整數。
例如,如果你的文件看起來是這樣的:
ff3c 5A cb2d
然後你就可以讀取這些3個值是這樣的:
int a, b, c;
fscanf(fp, "%x %x %x", &a, &b, &c); // a = 0xff3c, b = 0x5a, c = 0xcb2d
3
在fscanf
和fprintf
字符串中使用%x
格式說明符。
2
正如馬龍上面說:
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
。
+0
它很好的解釋謝謝! – Glove
相關問題
- 1. 將字符串轉換爲十六進制到十六進制
- 2. C#字符串爲十六進制,十六進制到字節轉換
- 3. INT爲十六進制字符串(C++)
- 4. 無符號字符十六進制到int十進制轉換C++
- 5. 將十六進制字符串轉換爲unsigned int問題C++
- 6. C#將int轉換爲小尾數十六進制字符串
- 7. 十六進制字符串轉換爲Int轉換
- 8. 轉換十六進制字符串十六進制值
- 9. 轉換十六進制字符串轉換爲十進制在C++
- 10. 字符串爲十六進制和十六進制轉換爲字符串
- 11. PHP將字符串轉換爲十六進制和十六進制字符串
- 12. JAVA轉換十六進制字符串
- 13. 十六進制ASCII字符串轉換
- 14. PowerShell十六進制字符串轉換
- 15. Arduino十六進制字符串爲無符號long int轉換
- 16. C++將十六進制字符串轉換爲十六進制char *十六進制數字
- 17. C# - 轉換十六進制值的字符串爲十六進制
- 18. 從十六進制字符串轉換爲十六進制字符數組
- 19. C++長十六進制字符串轉換爲二進制
- 20. 將二進制長字符串轉換爲十六進制c#
- 21. 字符串或字節轉換爲十六進制十進制在C#
- 22. 將十六進制代碼字符串轉換爲十進制的int []
- 23. 轉換十六進制到int
- 24. int轉換成十六進制串在C或OBJ-C
- 25. 使用遞歸將int轉換爲十六進制字符串
- 26. 將int轉換爲十六進制格式的字符串
- 27. 將int轉換爲十六進制字符串
- 28. 十六進制字符串int數組轉換
- 29. 將十六進制字符串數組轉換爲int值
- 30. 將int格式轉換爲十六進制字符串
爲什麼不要在格式字符串中使用'%x'? –
使用%x格式說明符而不是%s – Marlon
它不起作用,因爲我需要將該值放在int類型的變量中,因此當使用%x格式我在 – Glove