键入从C到Java的转换

Jui*_*iCe 9 c java android type-conversion android-ndk

我尽了最大努力去谷歌这个但却找不到一个表格类似转换的表格形式的干净答案.

我想转换这些类型的原因是因为我使用Android NDK从本机代码调用函数.问题是本机代码调用Java中不存在的不同类型.

我实际上没有C语言的经验,并且通过快速查看代码找到了这几种类型.请随意编辑此帖子以添加要转换的不同类型.

From C to Java

long ->

short ->

char ->

unsigned long ->

unsigned short ->

unsigned char ->

byte ->

Int8 ->

Int16 ->

Int32 ->

UInt8 ->

UInt16 ->

UInt32 ->
Run Code Online (Sandbox Code Playgroud)

此外,如果其中任何一个无法转换为Java类型,请解释原因.

Ósc*_*pez 7

这些是等价的,记住Java中原始数据类型的大小总是相同的,而C中数据类型的大小在某种程度上是编译器和体系结构特定的,如@millimoose所指出的那样.评论.

另外,请注意,char数据类型被定义为"可以包含基本字符集的机器的最小可寻址单元.它是一个整数类型.实际类型可以是有符号或无符号,具体取决于实现",而在Java中是单个16位Unicode字符.

long -> long
short -> short
char -> char
unsigned long -> N/A
unsigned short -> N/A
unsigned char -> N/A
byte -> byte
Int8 -> byte
Int16 -> short
Int32 -> int
UInt8 -> N/A
UInt16 -> N/A
UInt32 -> N/A
Run Code Online (Sandbox Code Playgroud)

在Java中,没有未签名的原始数据类型.该byte类型使用8位,int32位,short16位和long64位.

这里有一个链接到Java教程中的相关部分,并在更详细的解释部分4.2节中的Java语言规范.

  • @ÓscarLópez不会`Int8`映射到`byte`? (3认同)
  • char不映射到char.Java char是2个字节(UNICODE),而C char是1个字节(仅限ASCII). (2认同)
  • 鉴于这是标记的android,你真的需要摆脱char-char映射,因为它在这个平台上是完全不真实的,其中char是8位类型. (2认同)