java中的CFSwapInt32LittleToHost等效项

java中的CFSwapInt32LittleToHost等效项,java,c,Java,C,我正在尝试用java编写以下代码。CFSwapInt32LittleToHost在此尝试将字节从Little Endian转换或排序为主机字节顺序。有人能告诉我有没有等效的java函数,或者建议我如何用java编写这个函数吗 // All temperatures are read in celsius. // For display in Farenheit, manual conversion is required. NSData *data = cha

我正在尝试用java编写以下代码。CFSwapInt32LittleToHost在此尝试将字节从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\u endian

您需要CFSwapInt32LittleToHost的函数吗?