1
A
回答
3
char const* data = "F";
int num = int(strtol(data, 0, 16));
查找strtol和boost::lexical_cast瞭解更多詳情和選項。
3
在sscanf中使用%x
格式!
0
如果沒有一些黑魔法,你不能得到(s)printf將'F'轉換爲255。 Printf會將字符轉換爲其他表示,但不會更改其值。這可能顯示瞭如何字符轉換工作:
printf("Char %c is decimal %i (0x%X)\n", 'F', 'F', 'F'); printf("The high order bits are ignored: %d: %X -> %hhX -> %c\n", 0xFFFFFF46, 0xFFFFFF46, 0xFFFFFF46, 0xFFFFFF46);
產生
Char F is decimal 70 (0x46) The high order bits are ignored: -186: FFFFFF46 -> 46 -> F
是啊,我知道你問的sprintf,但不會告訴你任何東西,直到你做另一個打印。
這個想法是,每個通用的整數參數到一個printf放在堆棧(或在註冊表中)通過提升。這意味着它擴展到最大的通用尺寸:通過符號擴展或零填充將字節,字符和短褲轉換爲int。這使得堆棧上的參數列表保持合理狀態。這是一個很好的約定,但它可能源於PDP-11上的堆棧的16位字方向(它開始的地方)。
在printf庫(在調用的接收端),代碼使用格式說明符來確定參數(或全部參數)的哪部分被處理。所以如果格式爲'%c',則只使用8位。請注意,系統之間在如何「提升」十六進制常量方面可能存在一些差異。但是如果一個大於255的值被傳遞給字符轉換,高位被忽略。
1
的C++做的方式,與流:
#include <iomanip>
#include <iostream>
#include <sstream>
int main() {
std::string hexvalue = "FF";
int value;
// Construct an input stringstream, initialized with hexvalue
std::istringstream iss(hexvalue);
// Set the stream in hex mode, then read the value, with error handling
if (iss >> std::hex >> value) std::cout << value << std::endl;
else std::cout << "Conversion failed" << std::endl;
}
該程序打印255
+0
一個迂腐的解決方案不僅會檢查轉換是否成功,而且該iss具有eof標誌設置(沒有數據未被讀取)。我已經拋棄了這一點,因爲即使是非常基本的錯誤處理也必須令人困惑。 – Tronic 2010-01-17 04:35:40
相關問題
- 1. 將int轉換爲char
- 2. 將char轉換爲int?
- 3. 將char *轉換爲int
- 4. 將short int []轉換爲char *
- 5. 將int轉換爲char
- 6. 將const char *轉換爲int
- 7. 將int轉換爲char?
- 8. F# - 將char轉換爲int
- 9. 將char *轉換爲int
- 10. INT轉換爲char
- 11. 將int轉換爲char並反轉
- 12. 將int從int轉換爲char,其中涉及溢出錯誤
- 13. C++將char數組轉換爲int表示
- 14. 轉換類型爲int(C :: *)(INT,CHAR)爲int類型(INT,CHAR)
- 15. C - 將int轉換爲char並將char追加到char
- 16. Ç - 將char轉換成int
- 17. 將int轉換爲C中的char?
- 18. 如何將int轉換爲char *?
- 19. 如何將int轉換爲signed char?
- 20. 將int轉換爲char *以打印
- 21. Python - 將Hex轉換爲INT/CHAR
- 22. 如何將long int轉換爲char
- 23. C編程:將int *轉換爲char *
- 24. 無法將參數'int'轉換爲'char'
- 25. 將Linux C Char陣列轉換爲Int
- 26. 將int和char轉換爲字符串
- 27. Objective-C:將NSData轉換爲int或char
- 28. 將int轉換爲char C公式
- 29. 如何將char轉換爲int?
- 30. 是否將char *轉換爲int * undefined?
F = 15,FF = 255 – 2010-01-17 01:51:05
有人要重命名此,他詢問如何從十六進制轉換爲一個int,而不是*字符表示的char * – 2010-01-17 02:35:08
已修復。謝謝! :) – bobber205 2010-01-17 04:18:23