将iOS应用迁移到Android机器架构

时间:2012-06-04 14:08:22

标签: android ios types migration

我正在将iOS 5.0应用程序迁移到Android 2.3.3。

此iOS应用程序具有使用某些uint32_t变量的加密算法。

我在stdin.h上发现了这个:

#ifndef _UINT32_T
#define _UINT32_T
typedef unsigned int         uint32_t;
#endif /* _UINT32_T */

uint32_t是Objective-C中的unsigned int,因此Java中的等效内容为long。这是对的吗?

我的问题是:

是int,char,long等。目标C类型在Android上具有相同的内存表示吗?

1 个答案:

答案 0 :(得分:2)

没有。 Android(Java)没有无符号变量类型。

因此,如果您需要存储一个C无符号32位整数,那么您需要在Java中使用long,但这将是64位(这样您就可以存储uint32的完整精度)。

相反,任何已签名的表示都将具有相同的内存布局(但我不确定字节顺序,您应该自己检查它。)

除非您选择在Android中使用C / C ++并跳过Java(这可以完成但您需要在任何情况下都需要使用JNI将API调用桥接到Java),否则这是真的。

为了解决类似的问题,我找到了一个名为 Javolution 的库,它能够通过保持相同的布局为C结构提供良好的实现,看看here。但我正在处理结构,而不是普通的变量,所以这对你不起作用。