2013-07-25 1 views
1

내가 자바 스크립트 (노드)에 코드를 bitshifting 일부 복잡한 C 번호를 변환하기 위해 노력하고있어,하지만 난 예제로 변환 이런 종류의 문제가 있습니다 :부호없는 32 비트 정수가있는 자바 스크립트에서 비트 시프 팅/타입 캐스팅?

var d = false; 
var k = 61; 
var dd = 103; 

uint r = 2924539136; 
r |= unchecked((byte)(d ? (k + dd) : (k - dd))); 

Console.WriteLine("result: " + r); // 2924539350 

제 (바이트를 복제 할 수있는 방법이 있나요) 자바 스크립트에서 캐스팅 어디 내가 원하는 값을 계산, 나는 지금까지 가지고 있지만 그냥 결과 -42.

r |= (d ? (k + dd): (k - dd)); 

답변

1
var d = false; 
var k = 61; 
var dd = 103; 

r = 2924539136; 

b = (d ? (k + dd) : (k - dd)) 
x = (r | (b & 0xFF)) >>> 0 

복귀

x = 2924539350 

트릭 b>>>0to convert a signed 32-bit number to unsigned하지만 모든 하위 8 개 비트를 마스크 &0xFF을 사용하는 것이다.

관련 문제