C++ 计算字符串/数组元素的十六进制,然后将其转换为十进制

C++ 计算字符串/数组元素的十六进制,然后将其转换为十进制,c++,wxwidgets,C++,Wxwidgets,我有一个用wxwidgets设计的UI,在其中输入用户名。我想要所有元素的十六进制和,然后转换成十进制。这就是我所做的: 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_L

我有一个用wxwidgets设计的UI,在其中输入用户名。我想要所有元素的十六进制和,然后转换成十进制。这就是我所做的:

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 );

 }
wxArrayString TextAlia=wxT(“”)//宣布的全球
TextBox1=newwxtctrl(这个,TEXT_BOX1,wxT(“”),wxPoint(300,10),wxSize(100,20),wxTE_进程| wxTE_进程|选项卡| wxTE_左,wxDefaultValidator,wxT(“wxtbox”);
void MyFrame::OnGenerateKey(wxCommandEvent和WxUsed(事件)){
int i;
字符名[i];
TextAlia=TextBox1->GetValue();
i=strlen(TextAlia);
对于(i=0;i
这就是我一直试图做的,请帮帮我

我现在做的是:

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

}
int lengtharray=sizeof(name)/sizeof(name[0]);
对于(int j=0;j
i=strlen(TextAlia);
整数和=0;
对于(int j=0;j
i=strlen(TextAlia);
整数和=0;
对于(int j=0;j如果我理解正确,你想把字符串中字符的数量表示和。我不熟悉WxWIDGET,我想它使用它自己的字符串类型,但是我将演示如何用C风格字符串和C++ +COD> STD::String S.来做。第一件要注意的是<代码> char < /C> >只是一个数字类型,它可以存储在至少是0到127的数字。你可以直接在求和中使用它。当你把它打印出来时,它就会变成可识别的字母

我在这里粘贴了一个简单的程序:有两个函数显示如何循环字符串中的字符并对其求和。在这两种情况下,您只需对字符进行循环,并将其添加到运行的求和中

您显示的代码中还有几个错误。首先:

int i;
char name[i];
这里有两个错误。您尝试使用
i
而不初始化它(给它一个值)。您希望
name
有多大?第二,数组的大小必须是一个常量,在编译时已知。因此您可以执行以下操作

const int i = 10;
char name[i];
另一个可能的错误是:

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

如果我理解正确,你想把字符串中字符的数量表示出来。我不熟悉WxWiWGET,我认为它使用它自己的字符串类型,但是我将演示如何用C风格字符串和C++ +COD> STD::String S.来做。第一件要注意的是,<代码> char < /C>只是一个数字类型,它至少可以存储T。他把数字从0到127。你可以直接用它来求和。只要你把它打印出来,它就会变成可识别的字母

我在这里粘贴了一个简单的程序:有两个函数显示如何循环字符串中的字符并对其求和。在这两种情况下,您只需对字符进行循环,并将其添加到运行的求和中

您显示的代码中还有几个错误。首先:

int i;
char name[i];
这里有两个错误。您尝试使用
i
而不初始化它(给它一个值)。您希望
name
有多大?第二,数组的大小必须是一个常量,在编译时已知。因此您可以执行以下操作

const int i = 10;
char name[i];
另一个可能的错误是:

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

你到底想对用户名做什么?不清楚。我想对用户名做的是,用户名的字符必须更改为十六进制值,然后这些十六进制值应该有一个和。你想取每个字母的数字表示形式,并将它们加在一起?例如,
“abc”
979899
,和是
294
。你说对了“a”是61的十六进制,所以我想让a=61h b=62h,c=63h加上186h,然后转换成十进制390你可以把它们加起来(char[0]+char[1]+…),然后printf变成一个字符串。字符串a;printf(a,“十六进制:%X,十二月:%d”,sum,sum);你到底想对用户名做什么?不清楚。我想对用户名做的是,用户名的字符必须更改为十六进制值,然后这些十六进制值应该有一个和。你想取每个字母的数字表示形式,并将它们加在一起?例如,
“abc”
979899
,和是
294
。你说对了“a”是61的十六进制,所以我想让a=61h b=62h,c=63h加186h,然后转换成十进制390,你可以把它们加起来(char[0]+char[1]+…),然后printf变成一个字符串。字符串a;printf(a,“Hex:%X,Dec:%d”,sum,sum);你的意思是
sum+=name[j] 
。晦涩变量命名的失败。@安东·罗斯:你看,我不明白你为什么要写名字[j]我在文本别名中有字符串为什么名字[i]为True,我一开始是用她的i=0命名的,然后想,命名不好,我会把for循环改成j,忘了改名字[i].Thx作为指针。至于名称vs TextAlia,我的错,我没有真正阅读代码,并认为它在名称中…相应地改变了答案。你的意思是
sum+=name[j]
。模糊变量命名的失败。@Anton Roth:你看,我不明白你为什么写name[j]我在textalaso中有字符串为什么name[I]是的,我一开始和她在一起I=0,然后想,命名不好,我会将for循环更改为j,忘记更改指针的名称[I].Thx。至于名称vs TextAlia,我的不好,我没有真正阅读代码,并认为它在名称中…相应地更改了答案。