使用Bridj和jnavior在Java中使用指针地址
我用C编写了这段代码,我想用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++
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)));
}