본문 바로가기

Delphi

[Delphi] String -> Hex 로 변환

델파이 2010 에서는 기본 Character Set 이 유니코드로 지정되어 있어서,

Ansi 의 Hex 로 변경하려면 단순히 inttohex(Ord(string)) 이런 식으로 하면 안되더라고요.

예를 들어 '조조' 를 Hex 로 변경하면 'C1 B6 C1 B6' 으로 변환되야 정상인데 다른 Hex로 변환되더라고요.


한참 검색해보다가 해결 방법을 찾았습니다.

바로 'AnsiString' 타입을 이용하는건데요. 이걸 이용해서 2010 에서도 Ansi 를 쓸 수 있다더군요.


그래서 이걸 이용해 함수를 하나 제작했습니다.

function StrToAnsiHex(const str: string): string;
var
  Index: integer;
  temp: ansistring;

begin
  Result := '';
  temp := ansistring(str);

  for Index := 1 to length(temp) do
    Result := Result + inttohex(Ord(temp[Index]), 2);
end;


사용법)
 
var
   temp : string;
begin
   temp := StrToAnsiHex('조조') // temp = 'C1B6C1B6'