计算字符串/数组的元素的十六进制,然后将它们转换为十进制
我有一个用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
}
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
让我试试这个 – 2012-07-18 09:52:02
你的意思是'sum + = name [j]'。晦涩的变量命名的垮台。 – tinman 2012-07-18 09:54:10
@安顿罗斯:你看我不明白你为什么写了名字[j]我在TextAliaso中有字符串为什么说名字[i] – 2012-07-18 09:55:54
如果我理解正确的话,你要总结在一个字符串中的字符数表示。我对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++) {
您设置i
到TextAlia
长度,然后立即将其设置为0
。然后一遍又一遍地拨打strlen
。也许你想要:
int length = strlen(TextAlia);
for (i = 0; i < length; ++i) {
+1:好点,我错过了第一个错误 – 2012-07-18 10:08:34
你真的想用用户名做什么?目前尚不清楚。 – BoBTFish 2012-07-18 09:26:01
是什么问题? – PermanentGuest 2012-07-18 09:26:50
我想要的用户名称是用户名称的字符必须更改为十六进制值,然后应该有这些十六进制值的总和 – 2012-07-18 09:29:53