【发布时间】:2015-10-01 05:05:39
【问题描述】:
我正在尝试为 JRuby 实现一个 Java 扩展来执行字符串异或。我只是不确定如何将字节数组类型转换为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?
}
另外,如何就地执行相同的操作(即更新xs 值)?
【问题讨论】:
-
RubyString 上的构造函数在这里接受
byte[]org.jruby.RubyString.RubyString(Ruby runtime, RubyClass rubyClass, byte[] value)不确定这是否适用于这种情况? -
看起来很有希望。知道
rubyClass参数应该是什么吗? -
不幸的是不确定这个论点。我已经使用 Jruby 多年,但之前没有尝试过编写扩展程序。通过 freenode irc 上的#jruby 频道删除可能是获取更多信息的最快方式
标签: java jruby jruby-java-interop