스트링에서 16진수로 변환하는 그
StrtoInt('$'+Edit1.text);
은 아는데요. 근데 이건 그 Edit1.text가 변형되서요..
그냥 Edit1.text가 12345678 이라면
이 12345678을 16진수로 변환하여 BC614E가아니라
이 12345678 자체를 16진수로 쓸수없을까요??
답변부탁드리빈다.
예전 겜에디터 만들면서 제작해 놓은 소스가 있네요..
Integer를 Hex로 변환하는 소스입니다..
function GetFigure(const Value: String): Integer;
const
BIT = 16;
var
i: Integer;
tmpValue: DWord;
dwCompare: Int64;
begin
tmpValue:= StrToInt(Value);
if tmpValue <= 255 then
begin
Result:= 2;
Exit;
end;
i := 1;
dwCompare:= 1;
repeat
dwCompare:= dwCompare shl BIT;
inc(i);
until tmpValue <= dwCompare;
Result:= i * 2;
end;
function DecToHex(i, j : longint): string;
begin
Result:= IntToHex(i, j);
end;
function Func_IntToHex: String;
begin
Result:= DecToHex(StrToInt(Edit1.Text), GetFigure(Edit1.Text));
end;
답변 감사합니다.
그런데 그 edit1.text가 16진수면 오류가나네요;
'1234FFFF' is not valid integer value
이렇게요..
그 스트링에 16진수를 썼을때
그 16진수를 그대로 16진수로 쓸수있는방법이없을까요??
다시 답변 바랍니다.
제가 이해력이 낮은 건지 질문에 내용을 잘 모르겠습니다. ㅡ_ㅡ;;
제 생각에는 진법에 대한 이해가 부족하신게 아닌가 생각이 듭니다.
위에 적으신 것 처럼
var
dwVal : DWORD;
strVal : String;
dwVal := StrToInt('$' + Edit1.Text); 하면 일단 10진수의 값이 되겠죠.
이것을 다시 스트링 16진수로 나타내려면
strVal := format('%x',[dwVal]); 하시면 됩니다.
어차피 진법이란게 별의미가 없습니다. 표기할때 다르게 나타날뿐 실제 계산에서는 10진법을 쓰시면 됩니다.
아, 그리고 저 16진수는 dword 에 쓸건데 dword에 저장하는법도 혹시나 가르쳐주실수있다면 가르쳐주세요.