二进制转换为其他一些进制的方法,告诉我吧?谢了!

来源:百度知道 编辑:UC知道 时间:2024/05/19 05:21:52
各位大哥,我等着答案,请速速回答,谢了!

1.调用n=getvalue("111010101",9,2);获得二进制字符的十进制制
2.调用outstrint(n,s);将这值以s进制输出(s为二到十六进制)
例如,把二进制"11111111",以8进制输出就这样调用 :
outstring(getvalue("11111111",8,2),8);
你当然可以通过修改程序把输出结果存储到你想要的地方

//s是要转换的字符串,l是字符串长度,n为字符串代表的数字的进制
//2到16进制,返回值为整数,十进制
int getvalue(char* s,int l,int n)
{
if (s==0 || n<=1 || n>16)
return 0;
int i;
char c;
int value = 0;
int q = 1;

for (i=0;i<l;i++)
{
c = s[l-1-i];

if (c>='0' && c<='0'+n-1)
{
value+=q*(c-48);
q*=n;
}
else
{
if (n<11)
return 0;//错误的数据
else
if (c>='A' && c<='A'+n-11)
{
value+=q*(c-'A'+10);
q*=n;
}
else
if (c>='a' && c<='z'+n-11)
{
value+=q*(c-'a'+10);
q*=n;
}
else
return 0;//非法的字符