有jstringtostring或stringtojstring。 如何将字节转换为JByte(或其他变量类型)?
....
var x:jbyte;
begin
x:=bytetojbyte(65);
....
end;
感谢。
答案 0 :(得分:4)
java.io.OutputStream.write()
期望byte[]
(即一个字节数组)作为输入。 Delphi的JByte
接口是java.lang.Byte
类的JNI包装器,它本身是单个byte
值的Java对象包装器。 JByte
不代表字节数组,因此您无法将JByte
与OutputStream.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;