我正在尝试为JRuby实现Java扩展以执行字符串xor。我只是不确定如何将一个字节数组类型转换为RubyString:

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的值已更新)?

最佳答案

return context.runtime.newString(new ByteList(xBytes, false));

07-24 09:18