forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Полезные функции (http://forum.boolean.name/forumdisplay.php?f=17)
-   -   Перевод в десятичное число (http://forum.boolean.name/showthread.php?t=1484)

MiXaeL 12.09.2006 23:11

Перевод в десятичное число
 
Код:


int=ToInt("10011",2)
print int
 
waitkey()
 
 
Function ToInt#(inputnum$,base)
 If base=10 Return inputnum
 If base>10 Return 0
 l=Len(inputnum$)
 
 For i=0 To l-1
  rightnum=Right(inputnum$,1)
 
  If rightnum<base Then
  If rightnum>0 Then
    intnum#=intnum#+base^i*rightnum
  EndIf
  Else Return 0
  EndIf
  inputnum$=Left$(inputnum$,Len(inputnum$)-1)
 Next
 
 Return intnum#
End Function

Описание: переводит в десятичное число НЕОТРИЦАТЕЛЬНОЕ число с основанием НЕ БОЛЬШЕ 10
Возможно медленно :''(((т.к. переводит прямо в лоб), но как сделать по другому не знаю...

impersonalis 12.09.2006 23:25

Re: Перевод в десятичное число
 
Собственно - алгоритм: http://alglib.sources.ru/numbers/trans.php

Magus 13.09.2006 00:30

Re: Перевод в десятичное число
 
Перевод из любой СС в любую. Правда, на сишнике.
http://www.boolean.name/showthread.php?t=121

alcoSHoLiK 13.09.2006 00:47

Re: Перевод в десятичное число
 
[highlight=blitzbasic]
num$ = Input("Enter a binary number: ")
Print ToInt(num, 2)

num$ = Input("Enter a hexa-decimal number: ")
Print ToInt(num, 16)

WaitKey()
End

Function ToInt(Number$, base%)
Select base
Case 2
For i = 0 To Len(Number) - 1
token$ = Mid(Number, Len(Number) - i, 1)
If token Then result = result + 2^i
Next
Return result
Case 10
Return Int(Number)
Case 16
For i = 0 To Len(Number) - 1
token$ = Mid(Number, Len(Number) - i, 1)
Select Lower(token)
Case "a"
token = 10
Case "b"
token = 11
Case "c"
toden = 12
Case "d"
token = 13
Case "e"
token = 14
Case "f"
token = 15
End Select
If token Then result = result + 16^i * Int(token)
Next
Return result
End Select
End Function[/highlight]

MiXaeL 23.09.2006 22:03

Re: Перевод в десятичное число
 
Вот добыл нечто крутое:

Код:


; Taken from http://www.codersworkshop.com/viewpo...id=12259#12259
; modified to allow for upper or lower case
 
 
Function BaseToDec(basestr$, base)
 ;Converts a number of a particular base (up to 34) to a decimal integer
 ;eg BaseToInt("110",2 ) = 6
 ;  BaseToInt("A",16 ) = 10
 
 If base>34 Then Return 0
 endnum = 0:cnt=0
 For i=Len(basestr) To 1 Step -1
  char$ = Upper(Mid(basestr,i,1))
  If char=>"A" And char=<"Z"
  charnum = Asc(char)-Asc("A")+10
  Else
  charnum = char
  End If
  If charnum>base Then Return 0 ;ERROR!
  endnum = endnum + charnum * (base^cnt)
  cnt=cnt+1
 Next
 Return endnum
End Function
 
 
Function DecToBase$(intnum, base)
 ;Converts a decimal integer to a particular base (up to 34)
 ;eg IntToBase(10,2) = "1010"
 intnum=intnum+1
 
 If base>34 Then Return "0"
 endstr$="":cnt=0
 While base^cnt<intnum
  ;Find the length of the number
  cnt=cnt+1
 Wend
 For i=cnt-1 To 0 Step -1
  charnum=0
  Repeat
  charnum=charnum+1
  Until intnum-charnum*(base^i)=<0
  charnum=charnum-1
 
  If charnum>9
  char$ = Chr(Asc("A")-10+charnum)
  Else
  char$ = charnum
  End If
  endstr=endstr+char
  intnum = intnum - charnum*(base^i)
 Next
 
 Return endstr
End Function


impersonalis 25.12.2009 16:30

Ответ: Перевод в десятичное число
 
Код:

Local c%=124
Local p1%=Floor(c/100)
Local p2%=Floor(c/10)-p1*10
Local p3%=c Mod 10
Print p1+""+p2+""+p3
Local bp1=Bin(p1)
Local bp2=Bin(p2)
Local bp3=Bin(p3)
Print bp1+" "+bp2+" "+bp3
WaitKey()
End

примерно так


Часовой пояс GMT +4, время: 02:40.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot