簡體   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