vc中10进制转16进制的函数是什么,怎么用?? 另:char转int怎么转; 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 补充:比如就是char[10]={1234567890}我想把它转成16进制12 34 56 78 90 怎么转 atoi()char BUF[10]="1234567890";int i1,i2,i3,i4,i5;sscanf(BUF,"%2X%2X%2X%2X%2X,&i1,&i2,&i3,&i4,&i5); char 转int 有atoi你说的10进制往16进制的转换,我来看看,能否作一个给你,等下再回 void changefrom10to16jinzhi(DWORD inputnumber ,CString returnstring){ double inputnumber; inputnumber=(DWORD)inputnumber;//只考虑整数的情况 DWORD inputnumberinteger; double inputnumberdecimal; bool decimalflag=false; inputnumberinteger=(DWORD)inputnumber;//只考虑整数的情况 inputnumberdecimal=inputnumber-inputnumberinteger; DWORD a=inputnumberinteger; int i=0; int temp[32];//32个够了 char buffer[32]; char bufferdecimal[5];//表示小数的缓冲区,保留5位 for(i=0;inputnumberinteger / 16;i++) { int tempInteger; tempInteger=inputnumberinteger/16 ;//获得整数 temp[i]=inputnumberinteger-16*tempInteger; inputnumberinteger=tempInteger ;//获得余数 } temp[i]=inputnumberinteger % 16; for(int j=0;j<=i;j++) { if(temp[j]<10) itoa(temp[j],buffer+j,5); if(temp[j]==10) buffer[j]='a'; if(temp[j]==11) buffer[j]='b'; if(temp[j]==12) buffer[j]='c'; if(temp[j]==13) buffer[j]='d'; if(temp[j]==14) buffer[j]='e'; if(temp[j]==15) buffer[j]='f'; } if(inputnumberdecimal > 0.00001) { decimalflag=true; for(i=1;i<=5;i++) { temp[i]=(int)(inputnumberdecimal*16) ; TRACE("%d,inputdecimal =%f\n",temp[i],inputnumberdecimal); inputnumberdecimal=inputnumberdecimal *16 -temp[i]; } for(int j=1;j<=5;j++) { if(temp[j]<10) itoa(temp[j],bufferdecimal+j,5); if(temp[j]==10) bufferdecimal[j]='a'; if(temp[j]==11) bufferdecimal[j]='b'; if(temp[j]==12) bufferdecimal[j]='c'; if(temp[j]==13) bufferdecimal[j]='d'; if(temp[j]==14) bufferdecimal[j]='e'; if(temp[j]==15) bufferdecimal[j]='f'; } bufferdecimal[0]='.' ; } CString returnstring; if(!decimalflag) returnstring = "0x" +CString(buffer); else { returnstring="0x"+ CString(buffer); returnstring +=CString(bufferdecimal); } MessageBox(returnstring); }我测试了一下,呵呵,写的比较仓促,希望能有所帮助 //输入double 输出returnstring;void changefrom10to16jinzhi(double inputnumberIn ,CString returnstring){ double inputnumber; inputnumber=(DWORD)inputnumberIn;// DWORD inputnumberinteger; double inputnumberdecimal; bool decimalflag=false; inputnumberinteger=(DWORD)inputnumber;//只考虑整数的情况 inputnumberdecimal=inputnumber-inputnumberinteger; DWORD a=inputnumberinteger; int i=0; int temp[32];//32个够了 char buffer[32]; char bufferdecimal[5];//表示小数的缓冲区,保留5位 for(i=0;inputnumberinteger / 16;i++) { int tempInteger; tempInteger=inputnumberinteger/16 ;//获得整数 temp[i]=inputnumberinteger-16*tempInteger; inputnumberinteger=tempInteger ;//获得余数 } temp[i]=inputnumberinteger % 16; for(int j=0;j<=i;j++) { if(temp[j]<10) itoa(temp[j],buffer+j,5); if(temp[j]==10) buffer[j]='a'; if(temp[j]==11) buffer[j]='b'; if(temp[j]==12) buffer[j]='c'; if(temp[j]==13) buffer[j]='d'; if(temp[j]==14) buffer[j]='e'; if(temp[j]==15) buffer[j]='f'; } if(inputnumberdecimal > 0.00001) { decimalflag=true; for(i=1;i<=5;i++) { temp[i]=(int)(inputnumberdecimal*16) ; inputnumberdecimal=inputnumberdecimal *16 -temp[i]; } for(int j=1;j<=5;j++) { if(temp[j]<10) itoa(temp[j],bufferdecimal+j,5); if(temp[j]==10) bufferdecimal[j]='a'; if(temp[j]==11) bufferdecimal[j]='b'; if(temp[j]==12) bufferdecimal[j]='c'; if(temp[j]==13) bufferdecimal[j]='d'; if(temp[j]==14) bufferdecimal[j]='e'; if(temp[j]==15) bufferdecimal[j]='f'; } bufferdecimal[0]='.' ; } CString returnstring; if(!decimalflag) returnstring = "0x" +CString(buffer); else { returnstring="0x"+ CString(buffer); returnstring +=CString(bufferdecimal); } MessageBox(returnstring); 整数转16进制字符串可以这样:int i = ……;char s[32];sprintf(s , "%X" , i); 同意steedhorse(晨星) ,你要答案時 %d 代表10進制,%o代表8進制,%X代表16進制 atoi实现字符到数字的转换10到16进制的转换:你为什么要做这种转换呢?如果仅仅为了输出16进制,printf("%X",i)就可以了 求助:list或tree相关的问题,如题 串口在读取数据时,如何释放掉系统CPU资源 请问一下如何实现象QQ好友列表那样的树型控件? dll解压缩之后不能Create 请问大家,有经典的解析命令行参数的代码么?谢谢l 求教-一个简单问题(LPCTSTR如何转为CString?) 请教问题,关于CEdit类的 怎么在系统中进行伪装?? 对面的兄弟看过来 小问题一个! 安装了VC6.0的机器,当你的鼠标双击dsw或cpp文件时会怎样? 在MDI或SDI中如何使用视频扑获API-capCreateCaptureWindow
比如就是char[10]={1234567890}
我想把它转成16进制12 34 56 78 90 怎么转
int i1,i2,i3,i4,i5;
sscanf(BUF,"%2X%2X%2X%2X%2X,&i1,&i2,&i3,&i4,&i5);
你说的10进制往16进制的转换,我来看看,能否作一个给你,等下再回
{
double inputnumber;
inputnumber=(DWORD)inputnumber;//只考虑整数的情况
DWORD inputnumberinteger;
double inputnumberdecimal;
bool decimalflag=false;
inputnumberinteger=(DWORD)inputnumber;//只考虑整数的情况
inputnumberdecimal=inputnumber-inputnumberinteger;
DWORD a=inputnumberinteger;
int i=0;
int temp[32];//32个够了
char buffer[32];
char bufferdecimal[5];//表示小数的缓冲区,保留5位
for(i=0;inputnumberinteger / 16;i++)
{
int tempInteger;
tempInteger=inputnumberinteger/16 ;//获得整数
temp[i]=inputnumberinteger-16*tempInteger;
inputnumberinteger=tempInteger ;//获得余数
}
temp[i]=inputnumberinteger % 16;
for(int j=0;j<=i;j++)
{
if(temp[j]<10)
itoa(temp[j],buffer+j,5);
if(temp[j]==10)
buffer[j]='a';
if(temp[j]==11)
buffer[j]='b';
if(temp[j]==12)
buffer[j]='c';
if(temp[j]==13)
buffer[j]='d';
if(temp[j]==14)
buffer[j]='e';
if(temp[j]==15)
buffer[j]='f';
}
if(inputnumberdecimal > 0.00001)
{
decimalflag=true;
for(i=1;i<=5;i++)
{
temp[i]=(int)(inputnumberdecimal*16) ;
TRACE("%d,inputdecimal =%f\n",temp[i],inputnumberdecimal);
inputnumberdecimal=inputnumberdecimal *16 -temp[i];
}
for(int j=1;j<=5;j++)
{
if(temp[j]<10)
itoa(temp[j],bufferdecimal+j,5);
if(temp[j]==10)
bufferdecimal[j]='a';
if(temp[j]==11)
bufferdecimal[j]='b';
if(temp[j]==12)
bufferdecimal[j]='c';
if(temp[j]==13)
bufferdecimal[j]='d';
if(temp[j]==14)
bufferdecimal[j]='e';
if(temp[j]==15)
bufferdecimal[j]='f';
}
bufferdecimal[0]='.' ;
} CString returnstring;
if(!decimalflag)
returnstring = "0x" +CString(buffer);
else
{
returnstring="0x"+ CString(buffer);
returnstring +=CString(bufferdecimal);
}
MessageBox(returnstring);
}
我测试了一下,呵呵,写的比较仓促,希望能有所帮助
void changefrom10to16jinzhi(double inputnumberIn ,CString returnstring)
{
double inputnumber;
inputnumber=(DWORD)inputnumberIn;//
DWORD inputnumberinteger;
double inputnumberdecimal;
bool decimalflag=false;
inputnumberinteger=(DWORD)inputnumber;//只考虑整数的情况
inputnumberdecimal=inputnumber-inputnumberinteger;
DWORD a=inputnumberinteger;
int i=0;
int temp[32];//32个够了
char buffer[32];
char bufferdecimal[5];//表示小数的缓冲区,保留5位
for(i=0;inputnumberinteger / 16;i++)
{
int tempInteger;
tempInteger=inputnumberinteger/16 ;//获得整数
temp[i]=inputnumberinteger-16*tempInteger;
inputnumberinteger=tempInteger ;//获得余数
}
temp[i]=inputnumberinteger % 16;
for(int j=0;j<=i;j++)
{
if(temp[j]<10)
itoa(temp[j],buffer+j,5);
if(temp[j]==10)
buffer[j]='a';
if(temp[j]==11)
buffer[j]='b';
if(temp[j]==12)
buffer[j]='c';
if(temp[j]==13)
buffer[j]='d';
if(temp[j]==14)
buffer[j]='e';
if(temp[j]==15)
buffer[j]='f';
}
if(inputnumberdecimal > 0.00001)
{
decimalflag=true;
for(i=1;i<=5;i++)
{
temp[i]=(int)(inputnumberdecimal*16) ;
inputnumberdecimal=inputnumberdecimal *16 -temp[i];
}
for(int j=1;j<=5;j++)
{
if(temp[j]<10)
itoa(temp[j],bufferdecimal+j,5);
if(temp[j]==10)
bufferdecimal[j]='a';
if(temp[j]==11)
bufferdecimal[j]='b';
if(temp[j]==12)
bufferdecimal[j]='c';
if(temp[j]==13)
bufferdecimal[j]='d';
if(temp[j]==14)
bufferdecimal[j]='e';
if(temp[j]==15)
bufferdecimal[j]='f';
}
bufferdecimal[0]='.' ;
} CString returnstring;
if(!decimalflag)
returnstring = "0x" +CString(buffer);
else
{
returnstring="0x"+ CString(buffer);
returnstring +=CString(bufferdecimal);
}
MessageBox(returnstring);
int i = ……;
char s[32];
sprintf(s , "%X" , i);
10到16进制的转换:
你为什么要做这种转换呢?如果仅仅为了输出16进制,printf("%X",i)就可以了