java中的CFSwapInt32LittleToHost等效项
我正在尝试用java编写以下代码。CFSwapInt32LittleToHost在此尝试将字节从Little Endian转换或排序为主机字节顺序。有人能告诉我有没有等效的java函数,或者建议我如何用java编写这个函数吗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
// 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的函数吗?