首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

十进制转三十进制怎么整

2012-01-08 
十进制转三十进制如何整十进制转三十进制如何整[解决办法]可以将任意十进制数转换成任意(d 2)进制 *****

十进制转三十进制如何整
十进制转三十进制如何整

[解决办法]
可以将任意十进制数转换成任意(d> =2)进制 *******************/



#include <stdio.h>
#include <stdlib.h>

#define INCREMENT 8

void main()
{
float y,x2;
int d=2,m=16,j=-1,x1=0;

do{

printf( "请输入十进制数和所要转换的目的进制:\n(y,d)= ");
scanf( "(%f%*c%d) ",&y,&d);

x1=(int)y,x2=y-x1;

int *base,*top,*arr;

base=(int*)malloc(sizeof(int)*128);
if(!base){
printf( "Error!!! No enough memory! ");
exit(0);
}
top=base;

for(*top=x1;x1;top++)
{
if(top> (base+127))
base=(int*)realloc(base,128+INCREMENT);
*top=x1%d,x1/=d;
//已经得到d进制数的整数部分
}
arr=(int*)malloc(sizeof(int)*128);
if(!base){
printf( "Error!!! No enough memory! ");
exit(0);
}

for(j=-1,*arr=0;x2!=0&&j> =-m;(*arr)++,j--)
{ //*arr可以放入小数位数目
if(top> (base+127))
base=(int*)realloc(base,128+INCREMENT);
*(arr-j)=(int)(x2*d),x2=x2*d-*(arr-j);
}//已经得到d进制数的小数部分

for(--top;top!=base;top-=1)
printf( "%d ",*top);
printf( "%d ",*top);
//d进制数的整数部分已输出

if(*arr){ //如果有小数部分则输出小数点,及小数部分
putchar( '. ');
for(j=-1;j> =-(*arr);j--)
printf( "%d ",*(arr-j));
}
printf( "\n\n键入G转换下一个,按回车键结束\n请输入: ");
getchar();

}while( 'G '==getchar()&&getchar());//键入G转换下一个,按回车键结束

}//main


Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1787072

[解决办法]
function ToBase(byval value as uinteger, byval base as integer) as string
if ((base <2) andalso (base > 36)) then throw New System.ArgumentOutOfRangeException

if (value = 0) then return "0 "

dim Chars() as char = "01234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ "
dim sb as new system.Text.StringBuilder
while (value <> 0)
sb.append (chars(value mod base))
value = value \ base
end while
return StrReverse(sb.ToString)
end function

[解决办法]
36进制的转换,自己参考

Private Shared Function ToInteger_Scale36(ByVal strNum As String) As Integer
strNum = strNum.Trim
Dim I As Integer
Dim strTmp As String = ""
Dim intRtn As Integer = 0
For I = 0 To strNum.Length - 1
intRtn += CInt((Scale36_Scale10(strNum.Substring(I, 1))) * (36 ^ (strNum.Length - I - 1)))
Next
strTmp = Nothing
I = Nothing
Return intRtn
End Function

Private Shared Function ToString_Scale36(ByVal intNum As Integer) As String
Dim intMod As Integer = 0
Dim strRtn As String = ""
Do While intNum >= 36
intMod = intNum Mod 36
intNum = CInt(intNum / 36)

strRtn = Scale10_Scale36(intMod) & strRtn
Loop

If intNum <> 0 Then strRtn = Scale10_Scale36(intNum) & strRtn

intMod = Nothing
Return strRtn
End Function

Private Shared Function Scale36_Scale10(ByVal strNum As String) As Integer


If IsNumeric(strNum) Then
Return CInt(strNum)
Else
Return Asc(strNum.ToUpper) - 55
End If
End Function

Private Shared Function Scale10_Scale36(ByVal intNum As Integer) As String
If intNum >= 0 And intNum <= 9 Then
Return intNum.ToString.Trim
Else
Return Chr(intNum + 55)
End If
End Function

热点排行