Я следующий код C, что я пытаюсь карту в Java:ЮНА, как я иду от C Int * в ЮНА структуры
int32 Query(void* qryBuffer,
uint32_t qryLength)
{
static int8_t sendBuffer[MAX_REQUEST_SIZE];
message* queryMessage;
...
queryMessage = (message*)sendBuffer;
memcpy(&sendBuffer[0], &qryLength, sizeof(qryLength));
memcpy(&sendBuffer[sizeof(qryLength)], qryBuffer, qryLength);
...
query_ex(queryMessage);
}
typedef struct
{
uint32 length_u;
} message;
Эквивалент ЮНА является для структуры сообщений является:
public static class message extends Structure {
public int length_u;
public message() {
super();
}
protected List getFieldOrder() {
return Arrays.asList("length_u");
}
public message(int length_u) {
super();
this.length_u = length_u;
}
public static class ByReference extends omni_message implements Structure.ByReference {
};
public static class ByValue extends omni_message implements Structure.ByValue {
};
};
Я знаю, что они делают в коде C, но я не могу понять, как это сделать на стороне Java. Мне нужно, чтобы класс сообщений Java содержал длину и массив параметров, которые были переданы в
Пожалуйста, помогите!
Update: Я создал свою собственную копию структуры сообщения, который содержит байт []:
public static class messageEx extends Structure {
public byte[] buffer;
...
}
Я собираюсь попробовать и передать эту структуру в качестве противопоставить другой, но я не может проверить до завтра.
int size = struct.size();
byte[] buffer = new byte[size];
ByteBuffer bb = ByteBuffer.wrap(buffer);
bb.putInt(size);
bb.put(struct.getPointer().getByteArray(0, size));
messageEx msg = new messageEx(buffer);
query_ex(msg); // call to native world
Я попытался отредактировать сообщение, чтобы отформатировать его правильно, но это беспорядок. Пожалуйста, исправьте контент, чтобы использовать пробелы, а не для каждого места! – JNYRanger
Когда я использовал пробелы, он объединял несколько пробелов в одно пространство, как это делает html, поэтому я переключил их на nbsp. Есть ли другой способ опубликовать его? – JohnK
Выделите весь код и нажмите кнопку '[{}]', чтобы отделить блок и, следовательно, сохранить его форматирование. – technomage