不知道这个问题能否这么问,java默认的char型变量是两个字节,能不能让他只占一个字节?是跟unicode编码有关系吗?如何改变呢?
String的一个字符能不能也只占一个字节?
很郁闷,希望各位大侠帮忙如果不能改,delphi下的byte数组在java里怎么表示?
谢谢
String的一个字符能不能也只占一个字节?
很郁闷,希望各位大侠帮忙如果不能改,delphi下的byte数组在java里怎么表示?
谢谢
byte[]?
因为这个是要从java程序传到delphi程序中处理,所以好像不能直接用char上面写错了,是delphi中的char[]在java中怎么表示我也想byte[]来着
我现在就是数据类型不知道怎么统一啊
delphi的string一个字符一个字节,java的string要占两个字节,不知道怎么传递参数了呢
因此:要告之,你的真正目的是什么。
似乎delphi和java的编码不一样,所以读取字符的时候有区别,请问该怎么办呢?
delphi的byte[]等同于java的char[]
我的想法是:用JNA时不能用JAVA中的byte[],楼主要使用JNA中的ByteByReference[]即ByteByReference数组来传递。
以上供楼主参考。
动态链接库源码用C++写的,头文件:
int DUABind(struct UserInfo *puserinfo,
char *dsaip_address,
int port_no,
SOCKET *psock,
int bindseconds)delphi调用该dll时的接口描述:
function DUABind(puserinfo : PUserInfo;
dsaip_address : pchar;
port_no : integer;
var psock : TSocket;
bindseconds : integer
):integer;cdecl;external CLIENT_DLLNAME name 'DUABind';
使用JNA时该如何写接口?
我这样写的,
int DUABind(TUserInfo.ByReference puserinfo,
byte[] dsaip_address ,
int port_no,
Socket psock,
int bindseconds);其中TUserInfo定义如下
public class TUserInfo extends Structure implements Invariable{
public static class ByReference extends TUserInfo implements Structure.ByReference{}
public static class ByValue extends TUserInfo implements Structure.ByValue{} public byte[] Name = new byte[20]; //登录名
public byte[] Password = new byte[20]; //登录密码
}不能出现预计结果,但是没有报错,请帮忙看一下吧,谢谢
用法是:
ByteByReference mybbr = new ByteByReference();
Memory mymem = new Memory(20);//20个c字符
mymem.setString(0, "myip");
mybbr.setPointer(mymem.getPointer(0));