Objective-C和Java原始数据类型

时间:2011-08-26 13:40:10

标签: java objective-c primitive-types

我需要将一段代码从Objective-C转换为Java,但我在Objective-C中理解原始类型时遇到了问题。所以我在Objective-C代码中有他们的数据类型:

UInt64, Uint32, UInt8

是无符号整数(据我所知,从互联网上)。所以我的问题是,我可以使用byte(8位)等Java原始类型 - 而不是UInt8int(32位) - 而不是UInt32和{{1 (64位) - 而不是long

2 个答案:

答案 0 :(得分:2)

不幸的是,这不是一个直接的翻译,如果不了解你的程序,很难说出“正确”的方法是什么。

  • 如果您的UInt8值确实在0-255之间,则可能必须使用Java签名int才能保留整个范围。

  • 如果您正在处理字节流或内存布局,并且确实只需要使用单个字节的内存,那么您可以尝试使用byte,但您可能需要测试和处理要处理的情况设置高位(值> 127)。与其他未签名类型同上。

理想情况下,如果您的代码只是对无符号类型“默认”,但实际上签名版本也可以正常工作(即您的值的范围永远不会等于或超过2 ^ 7,2 ^ 15或2分别为^ 31,那么你对byteintlong的“直接”翻译可能没问题。

答案 1 :(得分:0)

是的,这些是在Java中使用的正确大小的数据类型。确保考虑到Java does not have unsigned types,并且诀窍是使用下一个最大的尺寸。 64位无符号算术需要特别考虑。