我試圖爲JRuby實現一個Java擴展來執行字符串xors。我只是不確定如何強制類型轉換的字節數組爲RubyString
:byte [] to RubyString用於JRuby Java擴展中的字符串xor
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 []'org.jruby.RubyString.RubyString(Ruby運行時,RubyClass rubyClas s,byte []值)'不確定這是否適用於這種情況? – xkickflip
看起來很有希望。任何想法'rubyClass'參數應該是什麼? – fny
不幸的是不確定這個論點。我已經使用了Jruby多年,但還沒有嘗試過寫過擴展。在freenode irc上#jruby頻道下降可能是獲得更多信息的最快途徑 – xkickflip