memcpy 和 memset 函数 java
memcpy and memset function to java
我目前正在将用 C 编写的 DLL 改编为 Java,但我在使用 memcpy 和 memset C 函数时遇到问题。
这是我要转换的(不是全部代码):
int res = 0;
int bytes_written = 0;
int totalsize;
int reportid;
hid_device *handle;
unsigned char trans_data[64];
unsigned char *buf;
buf = (*env)->GetByteArrayElements(env, data, NULL);
memcpy(trans_data+2,buf+bytes_written+2,totalsize);
memset(trans_data+2+totalsize,0,64-(totalsize+2));
对于 memcpy,我知道有 System.arraycopy 但是当按以下方式使用它时,它不是我期望的
System.arraycopy(trans_data, 2, buff, 2, totalsize);
考虑到 destination/source 参数的顺序在 C memcpy 和 Java arraycopy
中是不同的
C的memcpy(b+2, a+1, 2);
相当于Java的System.arraycopy(a, 1, b, 2, 2);
,意思是"copy positions 1 and 2 from array a into positions 2 and 3 of array b".
尝试重新排序您的参数。
我目前正在将用 C 编写的 DLL 改编为 Java,但我在使用 memcpy 和 memset C 函数时遇到问题。
这是我要转换的(不是全部代码):
int res = 0;
int bytes_written = 0;
int totalsize;
int reportid;
hid_device *handle;
unsigned char trans_data[64];
unsigned char *buf;
buf = (*env)->GetByteArrayElements(env, data, NULL);
memcpy(trans_data+2,buf+bytes_written+2,totalsize);
memset(trans_data+2+totalsize,0,64-(totalsize+2));
对于 memcpy,我知道有 System.arraycopy 但是当按以下方式使用它时,它不是我期望的
System.arraycopy(trans_data, 2, buff, 2, totalsize);
考虑到 destination/source 参数的顺序在 C memcpy 和 Java arraycopy
中是不同的C的memcpy(b+2, a+1, 2);
相当于Java的System.arraycopy(a, 1, b, 2, 2);
,意思是"copy positions 1 and 2 from array a into positions 2 and 3 of array b".
尝试重新排序您的参数。