Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.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
Java 什么是';基数';平均值为JNA';s Pointer.getPointerArray(长基)和Pointer.getStringArray(长基)?_Java_Arrays_Pointers_Jna_Base - Fatal编程技术网

Java 什么是';基数';平均值为JNA';s Pointer.getPointerArray(长基)和Pointer.getStringArray(长基)?

Java 什么是';基数';平均值为JNA';s Pointer.getPointerArray(长基)和Pointer.getStringArray(长基)?,java,arrays,pointers,jna,base,Java,Arrays,Pointers,Jna,Base,在JNA中,“基础”是什么意思 Pointer.getPointerArray(long base) Pointer.getStringArray(long base) ? 这篇文章没有解释这应该指的是什么“基础” 如果它是文本格式库,那么为什么还要将其传递给getPointerArray 它能指内存地址的位数吗?为什么它需要传递这样一个东西(如果在java中,它自己就不能理解,如果不能,我怎么能理解?) 如果是地址宽度,为什么要使用long?为未来做准备?JNA项目是否预见到一台具有1E1

在JNA中,“基础”是什么意思

Pointer.getPointerArray(long base) 
Pointer.getStringArray(long base)
?

这篇文章没有解释这应该指的是什么“基础”

如果它是文本格式库,那么为什么还要将其传递给getPointerArray

它能指内存地址的位数吗?为什么它需要传递这样一个东西(如果在java中,它自己就不能理解,如果不能,我怎么能理解?)

如果是地址宽度,为什么要使用long?为未来做准备?JNA项目是否预见到一台具有1E19位宽内存地址总线的大型机器

所有位都设置为1时,它应该是长的吗

它可能指的是主机的硬件基础吗?对于二进制,这可能不是2吗

它应该是偏移量吗


可能是数组终止字符吗?如果我的终止字符超过64位怎么办?如果小于64位怎么办?

在JNA的源代码中查找指针类

Pointer.getPointerArray(long base)
Pointer.getStringArray(long base)
。。。显然,在汇编程序/硬件级别的上下文中指的是“基”,其中一个寄存器将存储内存地址,而另一个寄存器将存储该地址的偏移量,该偏移量在内存访问期间自动求和。理想情况下,指针应该是“基址”,当您迭代内存内容时,您将调整“偏移”地址

因此基本上,“base”在这个上下文中的意思是“offset”:它从指针位置后的“base”字节开始,然后根据从这些内存部分读取的地址位置吐出指针/字符串对象,直到找到空值为止。我推测使用“base”一词的原因与该方法的内部编码方式有关:

它基于自身创建第二个指针对象,但将“base”参数作为“offset”传递,然后创建一个名为“offset”的索引变量。。。是 啊然后它进行迭代,以字节(通常为8)为单位将“offset”增加地址字大小,直到读取空值为止

因此,由于“offset”已经用作局部变量,它将与offset参数冲突,因此编码器将方法的offset参数命名为“base”