2015-06-15 54 views
1

我想把用戶輸入作爲一個字符串,並將每個單獨的元素轉換爲它的十六進制等同於C++中的無符號字符。例如,我想讓用戶輸入「CL」,並將其轉換爲存儲在無符號字符中的0x43和0x4C。取一個字符串中的每個字符並將其轉換爲十六進制C++?

string ui; 
unsinged char uihex; 

cout << "Please enter in command to execute: "; 
cin >> ui; 
for (int i=0; i<ui.length()-1; i++) 
{ 
    uihex = static_cast<unsigned char>(ui); 
} 
+1

好的,這是一個很好的初學者作業。你試過什麼了?你有什麼問題?哦,stackowerflow.com不是一個「給我代碼」網站,你需要自己展示一些努力。 –

+1

您不需要轉換。這些值是字符的ASCII值。只需閱讀數據。 –

+0

我會添加我上面試過的東西。 –

回答

0

如果你想打印十六進制值,則需要將char變量轉換爲整數類型。這將有助於編譯器選擇正確的功能進行打印:

char c = 'C'; 
cout << "0x" << hex << ((unsigned int) c) << endl; 
+0

我想只將值存儲爲十六進制,所以我可以通過函數傳遞它。 –

+0

十六進制是變量的*內部表示形式*的一種解釋,當傳遞給函數時(例外字符串類型),不需要轉換表示形式。你傳遞變量的函數的簽名是什麼? –

+0

UARTwrite(bytes_to_write,&uihex),其中bytes_to_write是一個int,而uihex是一個無符號字符。 –

0

我試圖把用戶輸入的字符串與每個 單獨的元素轉化成它的hex等值在C unsigned char類型++。 例如,我想要一個用戶輸入「CL」,並將其轉換爲 0x43和0x4C存儲在一個無符號字符。

不需要轉換。

char KAR = 'A'; // a char from the file 
int iKAR = static_cast<int>(KAR); // cast to an int 
// 
std::cout << "\nltr hex  dec" << std::endl; 
std::cout << KAR << " == "  
      << " 0x" << std::hex  // change to hex radix 
      << iKAR     // hex: KAR cast to an int 
      << " == " << std::dec // change to decimal radix 
      << iKAR     // decimal: KAR cast to an int 
      << std::endl; 

// output: 
// ltr hex  dec 
// A == 0x41 == 65 
相關問題