Я хочу обернуть структуру Java с массивом фиксированного размера без знака в байт [] в Java. Мой файл интерфейса в настоящее время выглядит следующим образом:SWIG Java - обнуление unsigned char [] в байте []
%module example
%include "arrays_java.i"
struct myStruct
{
unsigned char data[1024];
int len;
};
Java-прокси, созданные содержат получить и установить методы, которые принимают и возвращают короткий [].
Есть ли способ, и если да, то каким простым способом я могу заставить SWIG генерировать прокси-серверы java с использованием байт [] вместо короткого []?
Я не хочу каким-либо образом изменять структуру. Это просто упрощенный пример очень большого интерфейса, который я должен обернуть, который я не могу изменить.
Мне известно о том, что байт в java подписан и не охватывает диапазон unsigned char в C, но для передачи данных вокруг него гораздо удобнее, чем иметь дело с short [] или оболочкой, созданной с использованием array_class, определенный в файле carrays.i, который в конечном итоге предлагает методы getItem и setItem, которые, в свою очередь, берут или возвращают короткие.
Так что мой вопрос заключается в том, могу ли я каким-то образом заставить свинг каким-то образом (возможно, с некоторой типовой страницей) обрабатывать данные unsigned char [1024], такие как char [1024], в том, что он сопоставляется с байтом [] в java.
http://swig-user.narkive.com/G7BOFpOB/swig-convert-unsigned-char-pointer-to-byte-array – user3159253
Также см. Http://stackoverflow.com/questions/11564334/how-to -define-swig-typemap-for-return-unsigned-char-back-to-java – user3159253
Основная проблема Java-байта заключается в том, что он подписан так, технически «короткий» является наименьшим типом для обработки полного диапазона «0-255» , – user3159253