이 답변에 따라 Swift의 바이너리 스트림에서 float를 재구성하려고합니다 . 내가 알 수있는 한, 바이트는 정확하지만 결과 플로트는 그렇지 않습니다.
func didReceive(data: NSData!) {
var x:Float = 0
var bytes:[UInt8] = [UInt8](count: 4, repeatedValue: 0)
data.getBytes(&bytes, range: NSMakeRange(0, 4))
memcpy(&x, bytes, 4)
NSLog("x:%f bytes:[%d, %d, %d, %d]", x, bytes[0], bytes[1], bytes[2], bytes[3]);
}
이 함수는 다음을 출력합니다.
x:0.000000 bytes:[25, 0, 0, 0]
x
디버거에서 검사 할 때 값을 다음과 같이보고합니다.
0.0000000000000000000000000000000000000000000350324616
그러나, 바이트 [25,0,0,0]
진수해야 0x19000000
내 생각, 약으로 번역한다6.617
.
여기 내 실수는 어디에 있습니까? Swift float는 IEEE754 32 비트 float가 아닙니까?
리틀 엔디안 플랫폼에 있으므로 배열은 0x00000019
IEEE 단 정밀도 부동 소수점 숫자로서 약 3.5 * 10 -44 인 32 비트 정수와 동일합니다 .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다