При создании BridJ кода JNAerator, он отображает беззнаковых типов (например, окна ULONG
) к нормальному Явы long
:Bridj отображение типа для беззнаковых типов
// c code
typedef struct _S {
USHORT a;
ULONG b;
ULONG64 c;
} S;
// generated java code
class S extends StructObject {
@Field(0)
public short a() {
return this.io.getShortField(this, 0);
}
@Field(0)
S setA(short a) {
this.io.setShortField(this, 0, a);
return this;
}
@CLong
@Field(1)
public long b() {
return this.io.getCLongField(this, 2);
}
@CLong
@Field(1)
S setB(long b) {
this.io.setCLongField(this, 2, b);
return this;
}
// ULONG64 is ignored and not generated at all
Однако типы Java являются подписаны не unsigned. Если мне нужно исправить это вручную, какие типы мне нужно использовать? Байт-массивы вроде так?
@Field(0)
public byte[] a() { ... };
@Field(0)
public byte[] setA(byte[] a) { // check correct length };