编写代码把16进制表示的串转换为3进制表示的串。例如x=”5”,则返回:”12”;又例如:x=”F”,则返回”120”.
\#include "stdafx.h"\
/\*\
编写代码把16进制表示的串转换为3进制表示的串。例如x=”5”,则返回:”12”;又例如:x=”F”,则返回”120”.\
\*/\
inline int LocateValue( char c ){\
if( c \>= 'a' && c \<= 'f' )\
c = c - 'a' + 'A';\
\
if( c \>= 'A' && c \<= 'F' )\
return static\_cast\<int\>(c) - 'A' + 10;\
else\
return static\_cast\<int\>(c) - '0';\
}\
int main(){\
// Care : 负数,大数.\
// 先将16进制转为10进制,然后再转为3进制.\
string str;\
cin \>\> str;\
int number = 0;\
// 转为10进制.\
for( string::size\_type i = 0; i \< str.size(); i++ ){\
number = number\*16 + LocateValue(str[i]);\
}\
cout \<\< number \<\< endl;\
\
char newStr[12];\
int idx = 0;\
// 转为3进制.\
while( number != 0 ){\
newStr[idx++] = number%3 + '0';\
number /= 3;\
}\
for( int i = idx - 1; i \>= 0; i-- )\
cout \<\< newStr[i];\
cout \<\< endl;\
}\
/\*\
1f\
31\
1011\
请按任意键继续. . .\
\*/