2012-07-18 27 views
0

我有一個用wxwidgets設計的用戶界面,我在其中輸入用戶名。我想要所有元素的十六進制和,然後將其轉換爲十進制。這是我所做的:計算字符串/數組的元素的十六進制,然後將它們轉換爲十進制

wxArrayString TextAlia = wxT("");//declared global 

    TextBox1 = new wxTextCtrl(this, TEXT_BOX1, wxT(""), wxPoint(300, 10), wxSize(100, 20), wxTE_PROCESS_ENTER | wxTE_PROCESS_TAB | wxTE_LEFT, wxDefaultValidator, wxT("WxTextBox")); 


void MyFrame::OnGenerateKey(wxCommandEvent& WXUNUSED(event)) { 
int i; 
char name[i]; 

TextAlia = TextBox1->GetValue(); 

i = strlen(TextAlia); 
for (i = 0; i < strlen(TextAlia); i++) { 


char buffer[3];char Temp[3]; 

_itoa(name[i], buffer, 16); 

} 

這是我試圖做的請幫助我。

現在什麼做的id是:

int lengtharray = sizeof(name)/sizeof(name[0]); 

for (int j=0; j<lengtharray; j++) 
{ 
    name[j] = ?//i need to write something here so that the name[1] is changed to 45 for  
    capital "E" 
    // avariable may be of type hex just like sum that keeps on incrementing the value 

} 
+0

你真的想用用戶名做什麼?目前尚不清楚。 – BoBTFish 2012-07-18 09:26:01

+0

是什麼問題? – PermanentGuest 2012-07-18 09:26:50

+0

我想要的用戶名稱是用戶名稱的字符必須更改爲十六進制值,然後應該有這些十六進制值的總和 – 2012-07-18 09:29:53

回答

1
i = strlen(TextAlia); 
int sum = 0; 
for (int j = 0; j < i; ++j) { 
    sum += TextAlia[j] 
} 

char* a = new char[40]; 
sprintf(a, "%d", sum); // decimal value 
sprintf(a, "%x", sum); // hexadecimal value 
+0

讓我試試這個 – 2012-07-18 09:52:02

+2

你的意思是'sum + = name [j]'。晦澀的變量命名的垮臺。 – tinman 2012-07-18 09:54:10

+0

@安頓羅斯:你看我不明白你爲什麼寫了名字[j]我在TextAliaso中有字符串爲什麼說名字[i] – 2012-07-18 09:55:54

2

如果我理解正確的話,你要總結在一個字符串中的字符數表示。我對wxwidgets不熟悉,我認爲它使用自己的字符串類型,但是我會演示如何使用c風格的字符串和C++ std::string s來完成。首先要注意的是,char只是一個數字類型,能夠存儲至少0到127的數字。您可以直接使用它。只是當你打印出來時,它會變成可識別的字母。

我在這裏貼了一個簡單的程序:http://ideone.com/dqIE5有兩個函數,顯示如何循環字符串中的字符並對它們進行求和。在這兩種情況下,你只需要對角色進行循環,增加一個運行總和。

您顯示的代碼中還有幾個錯誤。第一個:

int i; 
char name[i]; 

這裏有兩個錯誤。您嘗試使用i而無需初始化它(給它一個值)。你認爲name有多大?其次,數組的大小必須是一個常量,在編譯時已知。所以,你可以不喜歡

const int i = 10; 
char name[i]; 

另一個可能的錯誤:

i = strlen(TextAlia); 
for (i = 0; i < strlen(TextAlia); i++) { 

您設置iTextAlia長度,然後立即將其設置爲0。然後一遍又一遍地撥打strlen。也許你想要:

int length = strlen(TextAlia); 
for (i = 0; i < length; ++i) { 
+0

+1:好點,我錯過了第一個錯誤 – 2012-07-18 10:08:34

相關問題