我需要把C++代码翻译成Java。我有两个担心的问题。
1)将C++到Java的unsigned int翻译为long。我选择使用long来增加存储容量。
2)使用按位运算符,特别是|和<<。假设我已经将无符号int值转换为long,这对这些运算符会有什么坏影响吗?例如在C++中:
unsigned int a;
unsigned int b;
unsigned int c;
a | (b<<c)
用Java可以做到这一点吗:
long a, b, c;
a | (b<<c)
请让我知道你认为我在做这些事情时可能遇到的任何问题。
谢谢
我的系统有4 GB的RAM,安装了Windows操作系统。我安装了VMWare来设置2 2GB内存的Ubuntu虚拟机。在Ubuntu中,我打开Eclipse并开始编码,然后Eclipse开始一次又一次地关闭,我开始收到以下错误:
There is insufficient memory for the Java Runtime Environment to continue. Native memory allocation (mmap) failed to map 28311552 bytes for committing reserved memory.
Possibl
有一些数据类型在C中存在,但在Java中不可用。我已经列出了其中的一些,并用Java编写了它们的替代品。如果我做得对,或者需要做一些修改,请给我一些建议:
unsigned char -> short
无符号短->整型
unsigned char *x -> short[] x
unsigned short *x -> int[] x
char *x ->字符串
unsigned int -> long
我正在进行一些Java集成,通过C库使用了werid类型映射(其中有更多的映射;):
#define CHAR char /* 8 bit signed int */
#define SHORT short /* 16 bit signed int */
#define INT int /* "natural" length signed int */
#define LONG
我刚开始使用JNI,所以我尝试用C语言从本地库中获取一个double和一个unsigned int,并将这些值返回给我的Java端,但我一直从Android Studio得到以下错误
Error:(111, 37) error: called object type 'double' is not a function or function pointer
Error:(117, 43) error: called object type 'unsigned int' is not a function or function pointer
Error:(2
我需要用JNA传递一个结构。
我所掌握的文件有以下信息:
int rdGetStatusHardware (struct StatusHardware *stat)
struct StatusHardware{
unsigned char SerialNumber[12];
unsigned long HWVersion;
unsigned long FWVersion;
unsigned long MemorySize;
unsigned short BootVersion;
unsigned short FPGAVersion;
unsigned long
我已经写了一些使用jni在java和c之间传值的代码。
目前所有的数字都被定义为int (java) -> jnit (jni/c) -> unsigned int (c)
代码可以工作,但效率确实很低,因为并不是所有要传递的数字都需要可用于整数的内存。
我的代码中有3种类型的值,它们需要包含0到4294967295、0到255和0到1的数字范围。
我不能计算出兼容所有3种“语言”的数据类型。
Range Java C/JNI C
4294967296 int jint uns
不知道我在这里做了什么(对C非常陌生,以前做过一些Python、Arduino和Java )。
int main(void){
unsigned long int sum = 0;
unsigned int count = 0;
for(unsigned long int i = 1; i <= 100; i++)
if(i%3 != 0 && i%5 != 0)
printf("cond%d\n", i);
count++;
sum += i;
我精通c#,我需要在JAVA方面的帮助。
我有一个输出4个变量的c++函数
int Func1(int inParam1, unsigned char* inParam2, int *outParam1, int *outParam2, int *outParam3, unsigned char** outParam4);
我可以使用PInvoke从C#调用这个函数,如下所示
[DllImport("CLSFPCaptureDLL.dll"]
int Func1(int inParam1, byte[] inParam2, out IntPtr outParam1