정렬 된 배열 uint8[8]
을 double
으로 변환하려고하면 약간의 문제가 있습니다. uint8[4]
을 비트 조작으로 long
으로 변환하는 것이 특히 쉽지만, double
이 부호 비트의 측면에서 지저분해질 수 있다는 것을 알고 있습니까?정렬 된 배열 uint8 [8]을 double로 변환
나는 단순히 ByteBuffer.wrap(bytes).getDouble()
을 사용하지만 난 그 쉽지 않다 가정이 코드를 구현하기 위해 노력
C.
에,하지만 마지막 명령은 오류를 제공Expression is not assignable
및
Shift count >= width of type
long tempHigh = 0;
long tempLow = 0;
double sum = 0;
tempHigh |= buffer[0] & 0xFF;
tempHigh <<= 8;
tempHigh |= buffer[1] & 0xFF;
tempHigh <<= 8;
tempHigh |= buffer[2] & 0xFF;
tempHigh <<= 8;
tempHigh |= buffer[3] & 0xFF;
tempLow |= buffer[4] & 0xFF;
tempLow <<= 8;
tempLow |= buffer[5] & 0xFF;
tempLow <<= 8;
tempLow |= buffer[6] & 0xFF;
tempLow <<= 8;
tempLow |= buffer[7] & 0xFF;
sum |= ((tempHigh & 0xFFFF) <<= 32) + (tempLow & 0xFFFF);
어떻게 이 절차를 올바르게 수행 또는 내가 만든 오류를 해결 그냥?
미리 감사드립니다.
예를 들어 주시겠습니까? 나는 지금 사인 문제를 보았습니다. – JavaCake
빅 엔디안의 경우 모든 것을 뒤집어 야합니까? – JavaCake
* 데이터 *가 빅 엔디안 인 경우 배열 오프셋을 뒤집어 야합니다. 코드는 기계 엔디안과 100 % 독립적입니다. –