繁体   English   中英

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);

考虑到C / memcpy和Java arraycopy中目标/源参数的顺序不同

C的memcpy(b+2, a+1, 2); 等效于Java的System.arraycopy(a, 1, b, 2, 2); 意思是“将数组a的位置1和2复制到数组b的位置2和3”。

尝试重新排序参数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM