将iOS应用迁移到Android机器架构
我正在将iOS 5.0应用程序迁移到Android 2.3.3 此iOS应用程序具有使用某些uint32\t变量的加密算法 我在stdin.h上找到了这个:将iOS应用迁移到Android机器架构,android,ios,types,migration,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\u t在Objective-C中是一个无符号int,因此它在Java中的等价物是long。这是正确的吗 我的问题是: int、ch
#ifndef _UINT32_T
#define _UINT32_T
typedef unsigned int uint32_t;
#endif /* _UINT32_T */
uint32\u t
在Objective-C中是一个无符号int
,因此它在Java
中的等价物是long
。这是正确的吗
我的问题是:
int、char、long等。Objective-C类型在Android上是否具有相同的内存表示形式?否。Android(Java)没有无符号变量类型
因此,如果您需要存储一个C无符号32位整数,那么您需要在Java中使用long,但这将是64位(这样您将能够存储uint32的完整精度)
相反,任何带符号的表示都将具有相同的内存布局(但我不确定endianness,您应该自己检查它)
这是正确的,除非您选择在Android中使用C/C++并跳过Java(这是可以做到的,但在任何情况下都需要使用JNI将API调用桥接到Java)
为了解决类似的问题,我发现了一个名为Javolution的库,它能够通过维护相同的布局为C结构提供良好的实现,请看一看。但是我使用的是结构,而不是简单的变量,所以这对您来说不适用。谢谢您的回答。可能,我将把这个算法迁移到C并使用JNI。再次感谢!