我試圖返回包含Bignum或Fixnum(Ruby)的二進制補碼錶示的字節數組。 Java中有一種方法可以完全實現 - 文檔:Java toByteArray() method,代碼爲:https://gist.github.com/867409Ruby - 包含Bignum/Fixnum的二進制補碼錶示的返回字節數組
我的需求與Java方法(取自Java頁面)相同:字節數組將採用大端字節順序:最重要的字節在第零個元素中。該數組將包含表示此BigInteger所需的最小字節數,包括至少一個符號位,即(ceil((this.bitLength() + 1)/8))
。
Ruby沒有>>>
運算符,我認爲這就是爲什麼我有這麼多問題將這個概念轉換爲Ruby。
添加一些不工作的代碼:
def to_byte_array(num)
result = []
until num == 0
result = [num & 0xff] + result
num = num >> 8
end
result
end
我_think_你應該能夠通過在Ruby中使用'>>'得到相同的結果。你嘗試過嗎? – Dogbert 2011-03-12 18:11:41
這是不同的。 >>>是一個無符號的右移運算符,>>是有符號的。 – bensie 2011-03-12 18:14:13
啊,你說得對。這是Java中的一個合理的右移。 – Dogbert 2011-03-12 18:20:02