2011-09-09 3 views
2

Java 코드를 (J) Ruby로 변환하려고하는데 bitwise 연산에 대한 경험이 부족하기 때문에 문제가 될 수 있습니다. 혼자서 해결할 수 있습니다.Ruby 부호없는 오른쪽 시프트 연산자

간단히 말해, Ruby에 부호없는 오른쪽 시프트 연산자 (>>>)가없는 것처럼 보이기 때문에이 Java 코드를 Ruby로 변환하는 방법을 모르겠습니다.

private static short flipEndian(short signedShort) { 
    int input = signedShort & 0xFFFF; 
    return (short) (input << 8 | (input & 0xFF00) >>> 8); 
} 

def self.flip_endian(signed_short) 
    input = signed_short & 0xFFFF 
    input << 8 | (input & 0xFF00) >> 8 
end 
+0

: http://stackoverflow.com/questions/5284369/ruby-return를 -byte-array-containing-twos-complement-of-bignum-fix 수정 –

+0

대신 원시 바이트로 작업 할 수 있다면 [Array # pack'] (http://www.ruby-doc.org /core/classes/Array.html#M000206). –

답변

0

이 처음 2 바이트를 교환하고, 정수의 모든 높은 비트 차단합니다 :이 도움이 될 수

def self.flip_endian(input) 
    input << 8 & 0xFF00 | input >> 8 & 0xFF 
end 
관련 문제