从TArray <uint8>中提取float32

时间:2017-12-01 10:21:07

标签: c++ sockets unreal-engine4

虚幻引擎(C ++)

嗨,我有一个来自TCP连接的字节TArray。我有58字节的标题和12 x 4字节的Float32。我需要从我的Array Bytes中提取12个float32数字,我已经尝试过这段代码来提取第一个数字,但结果每次都是错误的:

float ReceivedUE4float32;
ReceivedUE4float32 = float(ReceivedData[58]); //58 index of first float32
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, FString::Printf(TEXT("Dato intdex 58 ~> %f"), ReceivedUE4float32));

有人可以帮助我吗?

插座:https://github.com/openigtlink/OpenIGTLink/blob/release-3.0/Documents/Protocol/index.md

转换(12x4字节):https://github.com/openigtlink/OpenIGTLink/blob/release-3.0/Documents/Protocol/transform.md

1 个答案:

答案 0 :(得分:1)

float(ReceivedData[58])将取消引用ReceivedData中的第58个字节并从该值创建一个浮点数,这不是您想要的。

您可以使用reinterpret_cast来阅读数据:

float value = *(reinterpret_cast<float*>(ReceivedData + 58));

您没有提到您要定位的平台,但请记住,这并不关注字节序。