2013-10-02 4 views
0

Squirrel 언어를 사용하는 임베디드 시스템의 경우 32 비트 부동 소수점 숫자를 4 바이트로 변환해야합니다.다람쥐에서 float를 4 바이트로 변환하려면 어떻게해야합니까?

bytes = [ 
    (myfloat >> 24) & 0xff, 
    (myfloat >> 16) & 0xff, 
    (myfloat >> 8) & 0xff, 
    (myfloat  ) & 0xff, 
] 

그러나이 나에게 당신이 비트 부동 소수점에 이동할 수 없다는 유형의 오류가 있습니다 : 내가 좋아하는 일을하고, 난 그냥 비트 별도의 부분으로 바이트를 이동시키고 마스크 수 있습니다 기대했다.

내가 문서에서 볼 수있는 유일한 다른 점은 tointeger 함수입니다. 그래서 정수로 변환 한 다음 비 순차적 부분을 얻을 수 있습니다. 그렇지만 심지어 나중에 바이트에서 부동 소수점으로 이동해야합니다. .

아이디어가 있으십니까?

답변

0

아하, 당신은 읽고 BLOB에 float 값을 작성해야합니다 :

local pi = 3.1415926; 
bl <- blob(4); 
bl.writen(pi, 'f'); 
bytes <- []; 
foreach (byte in bl) { 
    server.log(byte); 
    bytes.append(byte); 
} 
back <- blob(4); 
foreach (byte in bytes) { 
    back.writen(byte, 'b'); 
} 
back.seek(0, 'b'); 
server.log(back.readn('f')); 
+0

여러 바이트를 통해 부동의 정수 값을 작성하려고, 또는의 바이너리 인코딩을 저장하기 위해 노력하고 있습니까 일련의 바이트로 된 float (float)? 질문은 전 (마이너스 캐스팅)처럼 보이고 답은 후자와 같습니다. –

+0

후자는 제가 쏘고있는 것입니다. – davidscolgan