求16进制数转化其对应的ASCII 字符函数(100分)

  • 主题发起人 主题发起人 zzmfree
  • 开始时间 开始时间
Z

zzmfree

Unregistered / Unconfirmed
GUEST, unregistred user!
求16进制数转化其对应的ASCII 字符函数
 
多少进制都没区别 值是一样的。如果你是想问十六进制字符串形式表示的整数转化为ASCII字符 那么送你两句:
一 SB。问题都说不清楚
二 RZ。这么简单的问题来这找骂。
 
function Unicode2Chs(AiUniCode : Integer) : String;
Var
ch, cl : String[3];
s : String;
Begin
s := IntToHex(AiUniCode, 2);
cl := '$' + Copy(s, 1, 2);
ch := '$' + Copy(s, 3, 2);
if ch='$' then s := Chr(StrToInt(cl)) + #0
else s := Chr(StrToInt(ch)) + Chr(StrToInt(cl)) + #0;
Result := WideCharToString(pWideChar(s));
end;
使用:Unicode2Chs($6211);
返回:'我'

很鄙视楼上的恶劣态度,貌似很牛B啊,不过这里不是牛B人来的地方。
 
s := IntToHex(AiUniCode, 2);
cl := '$' + Copy(s, 1, 2);
ch := '$' + Copy(s, 3, 2);
的确牛叉 IntToHex被设置成返回长度2的字符串了 然后又索引3。
 
楼上牛叉的人,下去好好看看inttohex和copy函数的说明。
不知道就别在这JJWW。
 
楼主需要转化的是 16 进制字符到真实内容?(如 A1F3CA ...)之类的?我以前写过一个:
function HexToBuffer(const ABuffer; ASize: Integer; var AText: string): Boolean; overload;

function GetCharOrd(C: Char): Byte;
begin
case C of
'0'..'9':
Result := Ord(C) - Ord('0');
'a'..'f':
Result := Ord(C) - Ord('a') + 10;
'A'..'F':
Result := Ord(C) - Ord('A') + 10;
else
Result := 0;
end;
end;

function GetWordOrd(W: Word): Char;
var
C: array[0..1] of Char absolute W;
begin
Byte(Result) := GetCharOrd(C[0]) shl 4 + GetCharOrd(C[1]);
end;
var
nIndex: Integer;
pData: PWord;
begin
Result := False;
if ASize and 1 <> 0 then
Exit;
ASize := ASize shr 1;
SetLength(AText, ASize);
nIndex := 1;
pData := @ABuffer;
while nIndex <= ASize do
begin
AText[nIndex] := GetWordOrd(pData^);
Inc(pData);
Inc(nIndex);
end;
Result := True;
end;

function HexToBuffer(const S: string; var T: string): Boolean; overload;
begin
Result := HexToBuffer(PChar(S)^, Length(S), T);
end;
 
后退
顶部