Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Bridj和jnavior在Java中使用指针地址_Java_C_Native_Jna_Jnaerator - Fatal编程技术网

使用Bridj和jnavior在Java中使用指针地址

使用Bridj和jnavior在Java中使用指针地址,java,c,native,jna,jnaerator,Java,C,Native,Jna,Jnaerator,我用C编写了这段代码,我想用Java编写这段代码: static u_int32_t print_pkt (struct nfq_data *tb){ unsigned char *data; ret = nfq_get_payload(tb, &data); if (ret >= 0) printf("payload_len=%d ", ret); printf("data: "); for(i=0;i<ret;i++

我用C编写了这段代码,我想用Java编写这段代码:

static u_int32_t print_pkt (struct nfq_data *tb){
    unsigned char *data;
    ret = nfq_get_payload(tb, &data);
    if (ret >= 0)
        printf("payload_len=%d ", ret);
    printf("data: ");
    for(i=0;i<ret;i++){
        printf("%c",data[i]);
    }
    fputc('\n', stdout);
    return ret;
}
static u_int32_t print_pkt(struct nfq_data*tb){
无符号字符*数据;
ret=nfq\U get\U有效负载(tb和数据);
如果(ret>=0)
printf(“有效载荷长度=%d”,ret);
printf(“数据:”);
对于(i=0;i tb)
{
int ret;
指针数据=null;
ret=MyLib.nfq_get_有效负载(tb,Pointer.pointerToPointer(数据));
如果(ret>=0){
System.out.println(String.format(“payload_len=%d”,ret));
系统输出打印(“数据:”);

对于(int i=0;i我最终找到了这样的修复方法,但仍然不知道为什么第一个不起作用:

val data2 = Pointer.pointerToPointer(data);
ret = Netfilter_queueLibrary.nfq_get_payload(tb, data2)
if (ret >= 0) {
  println(String.format(" payload_len=%d ", ret));
  println("data: ");
  for (i <- 0 until ret) {
    printf("%02x", (data2.get().getBytes(ret)(i)));
  }
val data2=Pointer.pointerToPointer(数据);
ret=Netfilter\u queueLibrary.nfq\u get\u有效负载(tb,数据2)
如果(ret>=0){
println(String.format(“payload_len=%d”,ret));
println(“数据:”);
为了
static int print_pkt (Pointer< nfq_data > tb)
{
    int ret;
    Pointer<Byte> data =null;
    ret = MyLib.nfq_get_payload(tb, Pointer.pointerToPointer(data));
    if (ret >= 0){
        System.out.println(String.format(" payload_len=%d ", ret));
        System.out.print("data: ");
        for(int i=0;i<ret;i++){
            System.out.print(data.get(i));
        }
    }
    System.out.println();

    return ret;
}
val data2 = Pointer.pointerToPointer(data);
ret = Netfilter_queueLibrary.nfq_get_payload(tb, data2)
if (ret >= 0) {
  println(String.format(" payload_len=%d ", ret));
  println("data: ");
  for (i <- 0 until ret) {
    printf("%02x", (data2.get().getBytes(ret)(i)));
  }