2011-05-16 84 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