Я пытаюсь реализовать расширение Java для JRuby для выполнения строковых xors. Я просто не зная, как приведение типа массива байт в RubyString
:byte [] to RubyString для строки xor в JRuby Java Extension
public static RubyString xor(ThreadContext context, IRubyObject self, RubyString x, RubyString y) {
byte[] xBytes = x.getBytes();
byte[] yBytes = y.getBytes();
int length = yBytes.length < xBytes.length ? yBytes.length : xBytes.length;
for(int i = 0; i < length; i++) {
xBytes[i] = (byte) (xBytes[i]^yBytes[i]);
}
// How to return a RubyString with xBytes as its content?
}
Кроме того, как бы один выполнить ту же операцию на месте (т.е. x
сек значения обновляется)?
Там являются конструкторами RubyString, которые принимают 'byte []' here' org.jruby.RubyString.RubyString (Ruby runtime, RubyClass rubyClas s, byte [] value] 'Не уверен, что это применимо в этом случае? – xkickflip
Выглядит многообещающе. Любая идея, каким должен быть аргумент 'rubyClass'? – fny
Не уверен в этом аргументе, к сожалению. Я использовал Jruby в течение многих лет, но раньше не пробовал писать расширение. Отбрасывание каналом #jruby на freenode irc может быть самым быстрым способом получить дополнительную информацию – xkickflip