technologies reynosa parts mexico empresa autopartes automotive aptiv delphi

reynosa - delphi technologies mexico



Delphi-Convertir matriz de bytes a cadena (4)

¿Cómo convierto una matriz de bytes en una cadena (base 256) en Delphi?


Creo que hay otra buena forma de convertir matrices de bytes en cadenas: una función Indy llamada BytesToString contenida en IdGlobal . También le permite especificar StartIndex , Length y TEncoding para su cadena. Lo he usado varias veces y lo encuentro muy útil.


No estoy seguro de a qué te refieres con Base256. Si quieres obtener una representación hexadecimal de los datos, usa esto:

function bintostr(const bin: array of byte): string; const HexSymbols = ''0123456789ABCDEF''; var i: integer; begin SetLength(Result, 2*Length(bin)); for i := 0 to Length(bin)-1 do begin Result[1 + 2*i + 0] := HexSymbols[1 + bin[i] shr 4]; Result[1 + 2*i + 1] := HexSymbols[1 + bin[i] and $0F]; end; end;

Si desea simplemente renderizar los datos como una cadena (¡esto no cambia el contenido!), Donde por cada byte de datos obtendrá un solo símbolo ASCII con ese código, haga

function bintoAscii(const bin: array of byte): AnsiString; var i: integer; begin SetLength(Result, Length(bin)); for i := 0 to Length(bin)-1 do Result[1+i] := AnsiChar(bin[i]); end;


Use el comando SetString . Establece la cadena a la longitud requerida y copia los bytes. No es necesario que la matriz tenga terminación nula. De hecho, si la matriz tiene bytes de valor cero, aparecerán correctamente dentro de la cadena; ellos no terminarán la cadena.

SetString(AnsiStr, PAnsiChar(@ByteArray[0]), LengthOfByteArray);

Si tiene un UnicodeString , necesitará dividir a la mitad el parámetro de longitud, ya que mide los caracteres, no los bytes:

SetString(UnicodeStr, PWideChar(@ByteArray[0]), LengthOfByteArray div 2);

Ver también, Convertir TMemoryStream a String en Delphi 2009 .


var LString : string; LBytes : TArray<byte>; begin LBytes := TArray<byte>.Create($01, $02, $03); LString := TEncoding.ANSI.GetString(ABytes); end;

Siendo GetString () la operación inversa de GetBytes ().