Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];

Вниз

Перевод из десятичной системы в восмеричную.   Найти похожие ветки 

 
INTAARI   (2004-03-19 18:08) [0]

Добрый день!!!
Может кто знает имеется ли в дельфи стандартная функция перевода из десятичной системы в восмеричную  наоборот.


 
Digitman ©   (2004-03-19 18:13) [1]

Есть такие ф-ция иль нет их, при работающей голове они пишутся буквально в течение не более пяти минут... сожалею, что ты столь занят и у тебя этих 5-ти минут попросту нет, коль скоро задал столь примитивнейший вопрос


 
INTAARI   (2004-03-19 18:19) [2]

В дельфе много простых функций, но мы же не пишем их аналог, а берем и исползуем, хотя замечание считаю корректным.


 
WebErr ©   (2004-03-19 18:22) [3]


> Добрый день!!!
> Может кто знает имеется ли в дельфи стандартная функция
> перевода из десятичной системы в восмеричную  наоборот.

Нет такой функции! :)
Цикл, где поочерёдно берешь число по модулю 8 (mod 8 эквивалентно and 7 !!!), запоминаешь результат, само число делишь на 8 (div 8 то же что и shr 3) и на следующую итерацию... :))))


 
RomeoGolf   (2004-03-19 18:27) [4]


function OcttoLong(s1:String):word;
const
 OctChars : array[0..7] of Char ="01234567";
var
  N,Ls: word;
  s: string;
  Mn,R: word;
begin
S:=UpperCase(s1);
  Ls:=Length(s); R:=0; Mn:=1;
  for n:=1 to Ls Do
  begin
     if (s[Ls-N+1]>="a") and (s[Ls-N+1]>="z") Then
         s[Ls-N+1]:=Chr(ord(s[Ls-N+1])-32);
     R:=R+(Pos(s[Ls-N+1],OctChars)-1)*Mn;
     Mn:=Mn*8;
  end;
  OcttoLong:=R;
end;

Function WordtoOct(s1:word):String;
Var s2:word;
tmp: string;
begin
Tmp:="";
S2:=(((s1)shr 15)and 1);
tmp:=inttostr(s2);
s2:=(((s1)shr 12)and 7);
tmp:=tmp+inttostr(s2);
s2:=(((s1)shr 9)and 7);
tmp:=tmp+inttostr(s2);
s2:=(((s1)shr 6)and 7);
tmp:=tmp+inttostr(s2);
s2:=(((s1)shr 3)and 7);
tmp:=tmp+inttostr(s2);
s2:=(s1 and 7);
tmp:=tmp+inttostr(s2);
Wordtooct:=tmp;
End;


Разумеется, не стандартное и довольно сырое. Писано не мной, одним моим коллегой, пригодится - хорошо.


 
Юрий Зотов ©   (2004-03-19 18:43) [5]

Что-то типа этого.

function IntToOct(Int: Int64): string;
var
 i: integer;
begin
 Result := ""
 for i := 1 to 22 do
 begin
   Result := IntToStr(Int and 7) + Result;
   Int := Int shr 3
 end
end;

function OctToInt(Oct: string): Int64;
var
 i: integer;
begin
 Result := 0;
 for i := 1 to Length(Oct) do
   Result := Result * 8 + StrToInt(Oct[i])
end;


 
WebErr ©   (2004-03-19 18:52) [6]

Короче смотри [3] :))))



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.04 c
9-1064889692
Zergling
2003-09-30 06:41
2004.04.11
DirectDraw


1-1079926032
Sphinx
2004-03-22 06:27
2004.04.11
TImageList


3-1078472122
Hursand
2004-03-05 10:35
2004.04.11
толстой сервер или толстой клиент


8-1076589619
able
2004-02-12 15:40
2004.04.11
TImage сильно мерцает...


3-1079008357
Uran
2004-03-11 15:32
2004.04.11
Как извлечь данные из интербейсовской базы данных?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский