2012-03-15 84 views
0

有一些數據類型存在於C中,但在Java中不可用。我列出了其中的一些,並用Java編寫了他們的替代品。請建議,如果我有做得正確,或一些修改的話:將數據類型從C映射到Java

無符號的字符 - >短

無符號短 - > INT

無符號字符* X - >短[]×

無符號短* X - > INT []×

字符* X - >字符串

無符號整型 - >長

+0

定義「替代品」。 – 2012-03-15 08:43:33

+0

@OliCharlesworth我正在開發一個項目,我需要在java中編寫C代碼的等效(轉換)。 – 2012-03-15 08:46:18

+1

好的。但是你需要記住,C中的數據類型沒有標準化的大小,與Java中的不同。 – 2012-03-15 08:47:22

回答

1

對於unsigned char您應該使用Java的char,它也是未簽名的。其他的都是可以的,因爲它們是內射的(假定C中常用的大小),即它們將保留值,儘管用指針/數組來說事情更復雜。

+0

由於Java中的char表示可能導致一些問題的unicode字符,因此我使用了short。 – 2012-03-15 08:57:06

+0

@Rog Matthews:任意編碼的文本數據通常用Java中的byte []表示 - 您不會找到將一個short []轉換爲String。鑑於C標準保證char和byte具有相同的大小,最好將C中的unsigned char映射到Java中的帶符號字節。 – 2012-03-15 09:10:36

+0

@Rog Matthews:如果一個字節只有8位 - 這樣的架構存在,那麼它當然會炸燬,但你不太可能遇到它們。 – 2012-03-15 09:12:29

0

我將使用以下

無符號字符 - >炭(16位)或短(15位)或/ *簽名* /字節(8位)

無符號短 - > int或/ * signed */short。

無符號字符* X - >字節[]×

無符號短* X - >短[]×

字符* X - >字符串或字符[]或它包裝一個字節的自定義類[]

unsigned int類型 - >長或/ * *簽字/ INT

在很多情況下,你可以使用符號的類型時,以前你要使用無符號的類型。通常你需要一些小的解決方法,但有時你不需要做任何事情。

+0

java中的char是未簽名的! – 2012-03-15 08:52:31

+0

這是真的,但如果您有8位字符的數據,則可以使用char,short或byte。 – 2012-03-15 08:54:10

0

Java有以下的基本數據類型, 字節

INT 長
浮動

焦炭
布爾值false

爲無符號字符* X,你應該使用字符串或字符[ ]或字節[] 對於無符號字符,您應該使用char ,對於unsigned int,您可以使用int或long(取決於)