Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D > Полезные функции

Полезные функции Выкладываем полезные функции, чтоб не изобретать велосипед заново...

Ответ
 
Опции темы
Старый 12.09.2006, 23:11   #1
MiXaeL
Бывалый
 
Аватар для MiXaeL
 
Регистрация: 22.08.2006
Сообщений: 700
Написано 146 полезных сообщений
(для 267 пользователей)
Перевод в десятичное число

 
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
Возможно медленно (т.к. переводит прямо в лоб), но как сделать по другому не знаю...
(Offline)
 
Ответить с цитированием
Старый 12.09.2006, 23:25   #2
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Re: Перевод в десятичное число

Собственно - алгоритм: http://alglib.sources.ru/numbers/trans.php
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 13.09.2006, 00:30   #3
Magus
Бывалый
 
Регистрация: 05.09.2005
Сообщений: 823
Написано 101 полезных сообщений
(для 205 пользователей)
Re: Перевод в десятичное число

Перевод из любой СС в любую. Правда, на сишнике.
http://www.boolean.name/showthread.php?t=121
(Offline)
 
Ответить с цитированием
Старый 13.09.2006, 00:47   #4
alcoSHoLiK
Дэвелопер
 
Регистрация: 17.01.2006
Сообщений: 1,512
Написано 78 полезных сообщений
(для 110 пользователей)
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]
(Offline)
 
Ответить с цитированием
Старый 23.09.2006, 22:03   #5
MiXaeL
Бывалый
 
Аватар для MiXaeL
 
Регистрация: 22.08.2006
Сообщений: 700
Написано 146 полезных сообщений
(для 267 пользователей)
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
(Offline)
 
Ответить с цитированием
Старый 25.12.2009, 16:30   #6
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: Перевод в десятичное число

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
примерно так
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевод impersonalis Болтовня 4 16.12.2008 00:49
Угадаю ваше число Koruna Загадки 4 15.09.2008 17:15
Слово(выражение)->Число pax C++ 0 20.05.2006 20:36
Число->Слово impersonalis C++ 9 13.05.2006 23:54


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com