Форум: "Основная";
Текущий архив: 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