[Delphi] 진법변환 (16->10, 10->2, 2->16. 10->8, 2->8)
델파이 진법변환 소스
16->10, 10->2, 2->16. 10->8, 2->8
2진수 : 0, 1 → 수의 개수가 두 개이기에 2진수.. (4진수 : 0, 1, 2, 3 → 수의 개수가 네 개이기에 4진수..)
8진수 : 0, 1, 2, 3, 4, 5, 6, 7 → 수의 개수가 여덟 개이기에 8진수..
10진수 : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 → 수의 개수가 열 개이기에 10진수..
16진수 : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A(10), B(11), C(12), D(13), E(14), F(15) → 수의 개수가 열여섯 개이기에 16진수..
---- 소스코드
// 문자를 10진수로...
function CharToInteger(chr: Char): Integer;
begin
Result := Ord(chr);
end;
// 16진수를 10진수로...
function HexToInteger(HEX: String): Integer;
begin
if HEX = '' then begin
Result := 0;
end
else begin
HEX := '$' + HEX;
Result := StrToInt(HEX);
end;
end;
// 10진수를 2진수로...
function DecToBinStr(n: integer): String;
var
S: string;
i: integer;
Negative: boolean;
begin
if n = 0 then begin
Result := '0';
System.Exit;
end;
Negative := False;
if n < 0 then
Negative := True; // 음수표시
n := Abs(n);
for i := 1 to SizeOf(n) * 8 do begin
if n < 0 then
S := S + '1'
else
S := S + '0';
n := n shl 1;
end;
Delete(S,1,Pos('1',S) - 1);
//remove leading zeros
if Negative then
S := '-' + S;
Result := S;
end;
// 2진수를 16진수로...
function BinToHex(const Bin: String; const Digits: Integer): String;
var
i,l: Integer;
Res: Extended;
begin
Res := 0;
l := Length(Bin);
for i := l downto 1 do begin
if Bin[i] = '1' then
Res := Res + Power(2,l-i);
end;
Result := IntToHex(Trunc(Res), Digits);
end;
// 10진수를 8진수로...
function DecToOct(iValue: LongInt): String;
var
iRest: LongInt;
sOct: String;
iFor: Integer;
begin
sOct := '';
while iValue > 0 do begin
iRest := iValue mod 8;
iValue := iValue div 8;
sOct := IntToStr(iRest) + sOct;
end;
Result := sOct;
end;
// 2진수를 8진수로...
function BinToOct(const Bin: String): String;
var
i,l: Integer;
Res: Extended;
begin
// 2진수를 10진수로 변환한다
Res := 0;
l := Length(Bin);
for i := l downto 1 do begin
if Bin[i] = '1' then
Res := Res + Power(2,l-i);
end;
// 10진수를 8진수로 변환한다
Result := DecToOct(Trunc(Res));
end;
---- 소스코드 끝
사용법
---- 소스코드// 16진수 FF를 10진수로 변환
ShowMessage('(16):FF->(10):'+IntToStr(HexToInteger('FF')));
// 10진수 255를 2진수로 변환
ShowMessage('(10):255->(2):'+DecToBinStr(255));
// 2진수 11111111를 16진수로 변환
ShowMessage('(2):11111111->(16):'+BinToHex('11111111',2));
// 10진수 255를 8진수로 변환
ShowMessage('(10):255->(8):'+DecToOct(255));
// 2진수 11111111를 8진수로 변환
ShowMessage('(2):11111111->(8):'+BinToOct('11111111'));
---- 소스코드 끝
댓글
댓글 쓰기