2013-05-28 4 views
0

일부 C# 압축 해제 코드를 AS3으로 이식하고 있으며 꽤 복잡한 작업을 수행하기 때문에 byteshort과 같은 데이터 유형을 사용합니다. 문제는 AS3에 이러한 데이터 유형이 없다는 것입니다.AS3의 C# 데이터 유형

대부분이 값을 보유하기 위해 uint을 사용할 수 있습니다. 그러나 일부 지점에서, 나는 같은 라인을 얻을 : 내 이해에

length[symbol++] = (short)len; 

,이 len가 읽고 shortlength 배열에 할당해야한다는 것을 의미합니다. 그래서 궁금 해서요, 어떻게 AS3에서이 작업을 수행 할 수 있습니까? 아마도 다음과 같이 추측합니다 :

length[symbol++] = len & 0xFF; 

그러나 이것이 올바른 결과를 얻는 지 확신 할 수 없습니다.

기본적으로 제 질문은 이것입니다. AS3에서 이러한 종류의 작업을 수행 할 때 올바른 바이트 수를 유지하려면 어떻게해야합니까? 어쩌면 ByteArray을 대신 사용해야합니까?

답변

0

캐스트가 C# 코드에있는 이유에 따라 AS3 코드에서 캐스트를 유지해야 할 수도 있고하지 않을 수도 있습니다. 형 변환이 캐스트 형식이 아닌 배열 형식 인 length 배열을 조정하는 것입니다 (즉, 정밀도가 손실되지 않음). len이 실제로 0x7FFF보다 클 수 있다면 일부 캐스트를 수행해야합니다.

아마도 ByteArray과 비슷한 결과를 처리해야한다면 C# StreamReader과 같은 랜덤 액세스가 필요한 것보다 더 어려울 수도 있습니다.

short은 길이가 2 바이트 (System.Int16과 같음)이므로 & 0xFFFF해야 할 비트 조작을 사용하여 변환해야합니다. 부호있는 타입과 부호없는 타입 사이에 캐스팅하는 경우 매우주의해야합니다 ...

+0

오, 죄송합니다. 나는 0xFFFF가 아니라 '0xFFFF'를 의미했습니다. ByteArray를 사용하려고 생각했지만 바이트 배열보다는 하나의 숫자 변수로 값을 필요로합니다. 그래서'& 0xFFFF'는 바람직한 결과를 줄 것입니까? – puggsoy