gpt4 book ai didi

java - Java 中的 CFwapInt32LittleToHost 等效项

转载 作者:行者123 更新时间:2023-11-30 17:16:53 25 4
gpt4 key购买 nike

我正在尝试用java编写以下代码。 CFwapInt32LittleToHost 此处尝试将字节从 Little Endian 转换或排序为主机字节顺序。有人可以告诉我是否有任何等效的java函数或建议我如何用java编写它。

//  All temperatures are read in celsius.
// For display in Farenheit, manual conversion is required.
NSData *data = characteristic.value;
uint8_t* dataPointer = (uint8_t*)[data bytes];

uint8_t flags = dataPointer[0]; dataPointer++;
int32_t tempData = (int32_t)CFSwapInt32LittleToHost(*(uint32_t*)dataPointer); dataPointer += 4;
int8_t exponent = (int8_t)(tempData >> 24);
int32_t mantissa = (int32_t)(tempData & 0x00FFFFFF);

if( tempData == 0x007FFFFF )
{
NSLog(@"Invalid temperature value received");
return;
}

float tempValue = (float)(mantissa*pow(10, exponent));

[_delegate updateTemperature:tempValue];

最佳答案

我建议您在 Java 中解决此问题的方法与在 C 中相同:您需要认识内部字节序线上字节序之间的区别,并尽量避免产生内部字节序

如果您有一个字节序列,并且希望将它们组合起来形成一个整数值,请按照线上字节序指定的顺序使用乘法和加法。这就是您在不产生内部字节顺序的情况下执行此操作的方法。

如果除了产生内部字节序之外的任何原因,您确实需要交换字节序,则可以通过重新排列字节来实现。从“小端”到“大端”的算法与从“大端”到“小端”的算法是相同的,因此它可能不应该被称为 CFSwapInt32LittleToHost 之类的名称;它应该被称为 swap_endian

关于java - Java 中的 CFwapInt32LittleToHost 等效项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29529222/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com