2011-05-16 87 views
1

我正在將一些代碼從C++轉換爲Java。有以下疑問 -C++到Java代碼轉換的疑惑

  1. C++ - static char ** gprs; 在Java中 - private static String [] gprs; OR private static Byte [] gprs;

  2. C++ - static char * mask; 在Java中 - 私有靜態字節掩碼; (正確?)

  3. C++ - memset((char *)& rm,'\ 0',sizeof(DRMK)); // 這裏DRMK是一個結構體。 rm是DRMK的一個對象。 所以在java中,我必須創建一個類,同時聲明變量,我必須將單個值設置爲0.是否正確? (PMSK *)p_msk +(long)(x-1),sizeof(PMSK));我們可以通過使用這個函數來實現這個功能。 如何在Java中進行鏡像。 PMSK在這裏是一個結構。
    其中 - 靜態PMSK wp; PMSK * pm; static char * p_msk;

感謝

回答

1
C++ - static char **gprs; 

取決於所使用的GPRS的,但我要說的(從看代碼的其餘部分),其byte更適合。一個字節數組。

C++ - static char *mask; 

我會使用一個字節,而不是給定「掩碼」名稱的字符。

C++ - memset((char *)&rm,'\0',sizeof(DRMK)); 

正如其他答案所述......只需要創建一個新的DRMK實例。

C++ - memcpy (&wp, (PMSK *)p_msk + (long)(x - 1), sizeof(PMSK)); 

如果你問我,這是一個按位掩碼。 wp的值將是從p_msk開始的(x-1)個字節的存儲位置處的值。基本上,它將從p_msk +(x-1)開始將大小爲sizeof(PMSK)的大塊內存複製到wp中。 如何在Java中做到這一點?你猜對了......字節數組。

1
  1. 這取決於什麼gprs被用於。沒有 自動解決方案。但如果是字符,String[] 似乎更合適。

  2. 同樣,這取決於mask的使用方式;或者 Byte[]String[]

  3. 你不需要任何東西。 Java會自動將所有成員 變量設置爲0,null或 之前的道德等價物調用構造函數。

  4. 如果我正確理解代碼,您需要爲Java類提供 拷貝構造函數並調用它。

+1

我會使用'byte'而不是'Byte' – 2011-05-16 13:26:26

2
  1. private static String[] gprs;
  2. private static String; //你願意在這裏有一個字符串,但我沒有絕對的把握 - 取決於上下文。
  3. 只需rm = new DRMK();
  4. 這取決於PMSK結構的結構。您應該編寫一個方法,它從語義上將一些數據從字符串複製到對象。
+0

是的,對於1,2這兩個存儲在char gprs中的數據都是十六進制的。所以我認爲Byte會更合適,因爲稍後會對它們進行邏輯OR/AND操作 – JavaBits 2011-05-16 13:19:35