我再来回答一遍吧,哈哈。
对于你的情况,是把一个ASC字符转成32进制吧。
那么先规定三十二进制的数字字符是从0..9和A..V共32个字符。
每个asc字符肯定对应两个三十二进制的数字字符。
程序如下:
function CharAscToChar32(ACharAsc: Char):String; //Asc字符转换成32进制
const
  ConvertTable: Array [0..31] of Char =('0','1',...,'9','A','B','C',...,'V');
  //中间省略的部分自己敲,我懒得敲。
begin
  Result := ConvertTable[BYTE(ACharAsc) div 32];
  Result := Result + ConvertTable[BYTE(ACharAsc) mod 32];
end;function Char32ToCharAsc(AChar32: String):Char; //32进制转换成Asc字符
const
  NumSet: set of Char = ['0'..'9'];
  CapsSet: set of Char = ['A'..'V'];
var
  Res: BYTE;
begin
  Result := #0;
  if Length(AChar32)<>2 then begin
    raise Exception.Create('输入的32位数字不合法');
    Exit;
  end;
  Res := 0;
  if AChar32[1] in NumSet then
    Res := (BYTE(AChar32[1]) - BYTE('0'))*32
  else if AChar32[1] in CapsSet then
    Res := (BYTE(AChar32[1]) - BYTE('A') + 10)*32 //因为条件不可能满足,所以这一行永远不会执行。
  else begin
    raise Exception.Create('输入的32位数字不合法');
    Exit;
  end;
  if AChar32[2] in NumSet then
    Res := Res + (BYTE(AChar32[2]) - BYTE('0'))
  else if AChar32[2] in CapsSet then
    Res := Res + (BYTE(AChar32[2]) - BYTE('A') + 10)
  else begin
    raise Exception.Create('输入的32位数字不合法');
    Exit;
  end;
  Result := Char(Res);
end;