M
m911
Unregistered / Unconfirmed
GUEST, unregistred user!
类似这样的字符串,在转换成正常字符的时候,怎么才能只转换第一个'00'之前的? (注意,如果要取的部分尾数是30或A0或... 的话 不要和00混淆)
3938373635343332313000632101000000E0E912005C
3132333435363738393000E912006D05937C3099632130
这是函数
function HexStringDecode(const S: string): string;
function GetByte(const V: Char): Byte;
begin
case V of
'a'..'f':
Result := Ord(V) - Ord('a') + 10;
'A'..'F':
Result := Ord(V) - Ord('A') + 10;
else
Result := Ord(V) - Ord('0');
end;
end;
var
R: PByte;
P: PChar;
I, Len: Integer;
index,j:integer;
begin
Len := Length(S) div 2;
Result := StringOfChar(#0, Len);
P := PChar(S);
R := PByte(Result);
for I := 1 to Len do
begin
R^ := GetByte(P[0]) * 16 + GetByte(P[1]);
Inc(R);
Inc(P, 2);
end;
end;
3938373635343332313000632101000000E0E912005C
3132333435363738393000E912006D05937C3099632130
这是函数
function HexStringDecode(const S: string): string;
function GetByte(const V: Char): Byte;
begin
case V of
'a'..'f':
Result := Ord(V) - Ord('a') + 10;
'A'..'F':
Result := Ord(V) - Ord('A') + 10;
else
Result := Ord(V) - Ord('0');
end;
end;
var
R: PByte;
P: PChar;
I, Len: Integer;
index,j:integer;
begin
Len := Length(S) div 2;
Result := StringOfChar(#0, Len);
P := PChar(S);
R := PByte(Result);
for I := 1 to Len do
begin
R^ := GetByte(P[0]) * 16 + GetByte(P[1]);
Inc(R);
Inc(P, 2);
end;
end;