SWIG Wrapping для uint8_t и uint16_t - PullRequest
       0

SWIG Wrapping для uint8_t и uint16_t

1 голос
/ 10 февраля 2012

Согласно документации SWIG (21.9.1 Отображения примитивных типов по умолчанию), C uint8_t сопоставляется с коротким Java, который составляет 16 битов, а C uint_15_t сопоставляется с Java int, который составляет 32 бита , Я полагаю, что функции C - 8 и 16 бит соответственно, почему SWIG удваивает число бит при переносе в Java?

1 Ответ

1 голос
/ 10 февраля 2012

Проблема в том, что типы Java всегда подписаны.

Таким образом, если у вас есть тип C без знака, который идет от 0 до 255, наименьший тип Java, который может представлять верхнюю половину этого диапазона, является коротким.

Альтернатива заключается в том, что вы перемещаете или каким-либо образом преобразуете uint8_t, чтобы использовать отрицательные части byte в Java, но семантика этого очень противоречива.

...