C++进制转换问题
寫一個(gè)把10進(jìn)制整數(shù)轉(zhuǎn)化為16進(jìn)制,10進(jìn)制,8進(jìn)制字符串的函數(shù)函數(shù)原形如下: void int_to_str(intvalue,char *buff,int flag);value 為整數(shù)變量,buff 為字符串指針,flag 用來(lái)表
示8,10,16進(jìn)制。
具體實(shí)現(xiàn)代碼如下:
/************************************************************* 寫一個(gè)把10進(jìn)制整數(shù)轉(zhuǎn)化為16進(jìn)制,10進(jìn)制,8進(jìn)制字符串的函數(shù)。 函數(shù)原形如下:void int_to_str(int value,char *buff,int flag); value為整數(shù)變量,buff為字符串指針,flag用來(lái)表示8,10,16進(jìn)制 **************************************************************/ #include<stdio.h> #include<string.h> #include<iostream> using namespace std; #define size 100 void int_to_str(int value,char *buff,int flag); int main() {int num,c;char s[size]={0};cout<<"輸入一個(gè)整數(shù):";while(cin>>num){cout<<"輸入轉(zhuǎn)換的進(jìn)制:";cin>>c;while(c==8||c==10||c==16){strcpy(s,"0");int_to_str(num,s,c);return 0;}cout<<"進(jìn)制無(wú)效!"<<endl;return 0;}cout<<"輸入值非法!"<<endl;return 0; }void int_to_str(int value,char *buff,int flag) {int r,i,j;char ch;char *p=buff;int temp = value;while(value){r = value % flag;value=value/flag;if(r<10){*(p++)=('0' + r);}else{*(p++)=('A'+ r -10);}}//兩個(gè)指針相減得到字符串的長(zhǎng)度,包括\0i=p-buff;//交換字符串里的頭尾每一個(gè)數(shù)值的順序,得到正確結(jié)果for(j=0;j<(i+1)/2;j++){ch=*(buff+j);*(buff+j)=*(p-1-j);*(p-1-j)=ch;}cout<<temp<<"轉(zhuǎn)換為"<<flag<<"進(jìn)制的結(jié)果是:"<<buff<<endl;return; }轉(zhuǎn)載于:https://www.cnblogs.com/raiven2008/p/4260877.html
總結(jié)
- 上一篇: response.setHeader()
- 下一篇: hihocoder #1103 : Co