objective-c代码转换为java代码

objective-c代码转换为java代码,java,android,objective-c,converter,difference,Java,Android,Objective C,Converter,Difference,我有一个objective-c代码。 但是我想转换成java代码 我知道objective-c的NSData等于java的字节[] 但我不知道其他关键词的等价物 目标C代码 请帮帮我你可以试试 如果您需要将java代码转换为Objective C 不要尝试将其转换为Java,确定它的功能并用Java编写 根据您的编程知识进行一点有教育意义的猜测,应该可以让您在理解代码方面有一段很长的路要走。这是编程语言相对于自然语言的一大优势,了解编程,即使你不懂语言,你通常也可以对代码片段的含义做出有根据

我有一个objective-c代码。 但是我想转换成java代码

我知道objective-c的NSData等于java的字节[]

但我不知道其他关键词的等价物

目标C代码

请帮帮我你可以试试

如果您需要将java代码转换为Objective C


不要尝试将其转换为Java,确定它的功能并用Java编写

根据您的编程知识进行一点有教育意义的猜测,应该可以让您在理解代码方面有一段很长的路要走。这是编程语言相对于自然语言的一大优势,了解编程,即使你不懂语言,你通常也可以对代码片段的含义做出有根据的猜测。在自然语言中,这一点根本不成立,比如说,懂法语对阅读印地语没什么帮助

让我们看看,uint8\u t可能是一种类型,它可能是什么类型?int听起来很像integer,8可能是整数的大小(以位为单位),它出现在第二行,也包含字节,u可能表示无符号。所以猜测uint8\u t是一个无符号8位整数。现在看看其他类型的单词,它们的意义相同吗

那么代码在做什么呢?您已经发现NSData*类似于字节[],那么代码会将标志设置为什么?数组中的第一个字节可能是?tempData呢?这里的类型中有一个32,也就是四个字节

得到tempData后,代码做什么?导致tempValue为浮点值的某些操作。也许float是一个32位的浮点数?这当然就是Java中的情况

然而,在这里你会碰到一堵墙。如果查看IEEE 754中32位浮点数的表示方式(最常用的表示浮点数的方式),您会发现它是以二进制形式存储的,尾数是一个字符

现在看看代码,pow10,指数看起来很像10的幂,而不是2的幂。尾数看起来像是一个分数吗

所以不管你猜到的4个字节是如何被转换成一个浮点,看起来要么a它们不是一个典型的32位浮点,要么b Objective-C代码是错误的

回到第一点——确定这段代码的用途,然后直接用Java编写,不要试图转换它

    NSData * updatedValue = characteristic.value;
    uint8_t* dataPointer = (uint8_t*)[updatedValue 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));                        
    self.tempString = [NSString stringWithFormat:@"%.1f", tempValue];