将字节数组转换为 PAnsiChar
Convert array of byte to PAnsiChar
我使用以下方法将名为 'TmpData' 的字节数组转换为 PAnsiChar:
PAnsiChar(@TmpData[0]);
但有些数据有换行符。如何删除换行符?请看下图
请注意,在下面的答案中,我假设您的字节数组是 ANSI 编码的并且以零结尾。
将数据分配给字符串:
var
str: string;
....
str := string(PAnsiChar(@TmpData[0]));
然后去掉换行符:
str := StringReplace(str, sLineBreak, '', [rfReplaceAll]);
您可能希望删除个别 #10
和 #13
字符,或者删除所有空白字符。这取决于您的需求,但本质就在这里。
或者,您可以遍历字节数组,删除您希望删除的所有字节,例如值为 10 和 13,或值小于 32。然后转换为 PAnsiChar
。
idxDst := 0;
idxSrc := 0;
while TmpData[idxSrc] <> 0 do begin
if TmpData[idxSrc] >= 32 then begin
TmpData[idxDst] := TmpData[idxSrc];
inc(idxDst);
end;
inc(idxSrc);
end;
TmpData[idxDst] := 0;
我使用以下方法将名为 'TmpData' 的字节数组转换为 PAnsiChar:
PAnsiChar(@TmpData[0]);
但有些数据有换行符。如何删除换行符?请看下图
请注意,在下面的答案中,我假设您的字节数组是 ANSI 编码的并且以零结尾。
将数据分配给字符串:
var
str: string;
....
str := string(PAnsiChar(@TmpData[0]));
然后去掉换行符:
str := StringReplace(str, sLineBreak, '', [rfReplaceAll]);
您可能希望删除个别 #10
和 #13
字符,或者删除所有空白字符。这取决于您的需求,但本质就在这里。
或者,您可以遍历字节数组,删除您希望删除的所有字节,例如值为 10 和 13,或值小于 32。然后转换为 PAnsiChar
。
idxDst := 0;
idxSrc := 0;
while TmpData[idxSrc] <> 0 do begin
if TmpData[idxSrc] >= 32 then begin
TmpData[idxDst] := TmpData[idxSrc];
inc(idxDst);
end;
inc(idxSrc);
end;
TmpData[idxDst] := 0;