比如说从编辑框取到了字符数组ch[9]=123456789
现在想把它们转换成面值相同的十六进制数,'1'对应ch[0]=0x01,'2'对应ch[1]=0x02,'3'对应ch[2]=0x03如此类推下面的程序是我找到的,为什么实现不了呢
HexChar(char c)
{
if((c>='0')&&(c<='9'))
return c-0x30;
else if((c>='A')&&(c<='F'))
return c-'A'+10;
else if((c>='a')&&(c<='f'))
return c-'a'+10;
else
return 0x10;
}
for(int i=0,i<10,i++)
HexChar(ch[i]);应该怎么编,求指教
现在想把它们转换成面值相同的十六进制数,'1'对应ch[0]=0x01,'2'对应ch[1]=0x02,'3'对应ch[2]=0x03如此类推下面的程序是我找到的,为什么实现不了呢
HexChar(char c)
{
if((c>='0')&&(c<='9'))
return c-0x30;
else if((c>='A')&&(c<='F'))
return c-'A'+10;
else if((c>='a')&&(c<='f'))
return c-'a'+10;
else
return 0x10;
}
for(int i=0,i<10,i++)
HexChar(ch[i]);应该怎么编,求指教
函数功能: 数字转化为对应的字符串.
+++++*/
void NumChangChar(float num,char* ch)
{
unsigned long int data;
float numtemp; numtemp = num;
data = (int)(numtemp / 10000);
ch[0] = data + 0x30;
if(data > 9)
{
ch[0] = '9';
} numtemp = numtemp - data*10000;
data = (int)(numtemp /1000);
ch[1] = data + 0x30; numtemp = numtemp - data*1000;
data = (int)(numtemp /100);
ch[2] = data + 0x30; numtemp = numtemp - data*100;
data = (int)(numtemp /10);
ch[3] = data + 0x30; numtemp = numtemp -data*10;
data = (int)(numtemp);
ch[4] = data + 0x30; numtemp = numtemp - data;
data = (int)((numtemp+0.05) * 10); //四舍五入
if(data>9)
data = 9;
ch[5] = data + 0x30;
}反过来即可
char szHex[] = {0x01, 0x02......0xff};
然后直接通过数组赋值。
int len = strlen(ch);
int* buf = new int[len];
memset(buf, 0, sizeof(int)*len); char a[10] = {0};
char b[2] = {0};
int i=0;
for(; i<len; i++)
{
b[0] = ch[i];
sprintf(a, "0x%02d", atoi(b));
buf[i] = strtoul(a, NULL, 16);
}
CString str;
CString tmp;
for(i=0; i<len; i++)
{
tmp.Format(_T("0x%02x "), buf[i]);
str += tmp;
}
AfxMessageBox(str);
如果是这样呢
ch[] = "778899123456789";要换成ch[0]=0x77,ch[1]=0x88,ch[2]=0x99,ch[3]=0x01,ch[4]=0x02....
前面的六个字符应该要怎么转了,要不要把数组拆成两组
编程动态声明:char* pa = new char[len];
最后:delete[] pa;
char ch[] = "778899123456789";
int len = strlen(ch);
int* buf = new int[len];
memset(buf, 0, sizeof(int)*len);
char a[10] = {0};
char b[3] = {0};
int i=0;
#define MAX_LEN 6
int nIndex = 0;
for(i=0; i<MAX_LEN; i+=2)
{
b[0] = ch[i];
b[1] = ch[i+1];
sprintf(a, "0x%02d", atoi(b));
buf[nIndex++] = strtoul(a, NULL, 16);
}
memset(b, 0, sizeof(b)); for(i=MAX_LEN; i<len; i++)
{
b[0] = ch[i];
sprintf(a, "0x%02d", atoi(b));
buf[nIndex++] = strtoul(a, NULL, 16);
}
CString str;
CString tmp;
for(i=0; i<nIndex; i++)
{
tmp.Format(_T("0x%02x "), buf[i]);
str += tmp;
}
AfxMessageBox(str);
T T 我又不懂了,如果数组里面有字母的呢 比如说ch[]="7F8F9F123456789"
好像转不了
int len = strlen(ch);
int* buf = new int[len];
memset(buf, 0, sizeof(int)*len);
char a[10] = {0};
char b[3] = {0};
int i=0;
#define MAX_LEN 6
int nIndex = 0;
for(i=0; i<MAX_LEN; i+=2)
{
b[0] = ch[i];
b[1] = ch[i+1];
sprintf(a, "0x%c%c", b[0], b[1]);
buf[nIndex++] = strtoul(a, NULL, 16);
}
memset(b, 0, sizeof(b));
for(i=MAX_LEN; i<len; i++)
{
b[0] = ch[i];
sprintf(a, "0x%02d", atoi(b));
buf[nIndex++] = strtoul(a, NULL, 16);
}
CString str;
CString tmp;
for(i=0; i<nIndex; i++)
{
tmp.Format(_T("0X%02X "), buf[i]);
str += tmp;
}
AfxMessageBox(str);