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

Calculating the hexadecimal of the elements of a string/array and then convert these to decimal

本文关键字:转换 十进制 然后 字符串 数组元素 十六进制 计算      更新时间:2023-10-16

我有一个用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 );
 }

这就是我试图做的,请帮帮我。

现在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
}

如果我理解正确,您需要求和字符串中字符的数字表示。我不熟悉wxwidgets,我认为它使用自己的字符串类型,但我将展示如何使用c样式字符串和c++std::strings。首先要注意的是,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++) {

i设置为TextAlia的长度,然后立即将其设置为0。然后反复呼叫strlen。也许你想要:

int length = strlen(TextAlia);
for (i = 0; i < length; ++i) {
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