如何在delphi xe5中将字节转换为JByte?

时间:2013-12-08 23:39:52

标签: delphi type-conversion delphi-xe5

有jstringtostring或stringtojstring。 如何将字节转换为JByte(或其他变量类型)?

....
var x:jbyte;
begin
 x:=bytetojbyte(65);
....
end;

感谢。

2 个答案:

答案 0 :(得分:4)

java.io.OutputStream.write()期望byte[](即一个字节数组)作为输入。 Delphi的JByte接口是java.lang.Byte类的JNI包装器,它本身是单个byte值的Java对象包装器。 JByte不代表字节数组,因此您无法将JByteOutputStream.write()一起使用。

如果你看一下JOutputStream单元中Delphi的java.io.OutputStream接口(Androidapi.JNI.JavaTypes的JNI包装器)的声明,它有write()个方法,期望{{1}作为输入。 TJavaArray<Byte>单位宣布TJavaArray<T>。如果您尝试将数据缓冲区从Delphi代码传递到Androidapi.JNIBridge,则必须声明OutputStream.write()变量,将其分配到所需长度,然后将数据复制到其中,例如:< / p>

TJavaArray<Byte>

答案 1 :(得分:0)

function stringtoJbyte(metin:string):TJavaArray<Byte>;
var
  buffer: TJavaArray<Byte>;
  i:integer;
begin
  buffer := TJavaArray<Byte>.Create(length(metin)+1);
  for i := 1 to Length(metin) do
        buffer.Items[i]:= ord( (metin[i-1]) );
  result:=buffer;
end;

我用这个代码!它对我有用。 再次感谢remy lebeau ..

编码(用于ışİçö... ...)功能;

function stringtoJbyte(metin:String):TJavaArray<byte>;
var
  buffer: TJavaArray<byte>;
  bufferByte:TArray<byte>;
  i,len:integer;
begin
  bufferByte:=TEncoding.UTF8.GetBytes(metin);
  //len:=ByteLength(metin);
  len:=length(bufferByte);
  buffer := TJavaArray<byte>.Create(len+1);
  for i := 0 to len do
        buffer.Items[i+1]:=bufferByte[i] ;
  result:=buffer;
end;