Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.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 Android LEB128类型大小_Java_Android - Fatal编程技术网

Java Android LEB128类型大小

Java Android LEB128类型大小,java,android,Java,Android,我对LEB128或Little-Endian Base 128格式感到困惑。在AOSP源代码Leb128.java中,其读取函数的返回类型(无论是有符号还是无符号)为int。我知道java中int的大小是4字节,也就是32位。但是AOSP中LEB128的最大长度是5字节,即35位。那么其他丢失的3位在哪里呢 感谢您的回复。LEB中的每个数据字节在实际输出中仅占7位-剩余的位用于指示是否结束 发件人: 要使用无符号LEB128对无符号数字进行编码,请首先用二进制表示数字。然后零将数字扩展到7位的倍

我对LEB128或Little-Endian Base 128格式感到困惑。在
AOSP
源代码
Leb128.java
中,其读取函数的返回类型(无论是有符号还是无符号)为
int
。我知道java中
int
的大小是4字节,也就是
32位。但是AOSP中
LEB128
的最大长度是5字节,即
35位。那么其他丢失的
3位
在哪里呢


感谢您的回复。

LEB中的每个数据字节在实际输出中仅占7位-剩余的位用于指示是否结束

发件人:

要使用无符号LEB128对无符号数字进行编码,请首先用二进制表示数字。然后零将数字扩展到7位的倍数(这样最高有效的7位不都是0)。将数字分成7位一组。为每个7位组输出一个编码字节,从最低有效到最高有效

额外的位与其说是“丢失”,不如说是“用于指示它是否是数据的结尾”


您不能希望对任意32位值进行编码,其中一些值占用少于4个字节,而另一些值占用多于4个字节。

LEB中的每个数据字节在实际输出中仅占7位-剩余的位用于指示是否结束

发件人:

要使用无符号LEB128对无符号数字进行编码,请首先用二进制表示数字。然后零将数字扩展到7位的倍数(这样最高有效的7位不都是0)。将数字分成7位一组。为每个7位组输出一个编码字节,从最低有效到最高有效

额外的位与其说是“丢失”,不如说是“用于指示它是否是数据的结尾”


您不能希望对任意32位值进行编码,其中一些值占用少于4字节,而另一些值占用多于4字节。

谢谢您的回复。我知道额外的位表示数据的结束。我把LEB中的
7位*5字节=35位这一点弄糊涂了。但是返回值类型是
int
,其大小是
32位
。现在我可能知道LEB是zip
int
的一种格式,所以不会丢失任何位,而是额外的位。@litao3rd:恐怕我不太理解你的评论,但是如果你使用的数据大部分都是5字节,那么LEB是个糟糕的选择。关键是要用少于4个字节来表示大多数值。。。否则,您最好只使用固定的每个值4字节。是的,如果你写了一个5字节的值,前3位应该是0。我的意思是在LEB格式中,数据大部分是5字节,也就是35位。LEB128用于存储大小为32位的
int
。这样就足够工作了。我只是对它的大小感到困惑。感谢并抱歉我的英语。@litao3rd:它最多使用5个字节来表示32位,是的。不过,我还是希望选择它来表示大多数值都可以用1-3字节表示的数据。谢谢你的回复。我知道额外的位表示数据的结束。我把LEB中的
7位*5字节=35位这一点弄糊涂了。但是返回值类型是
int
,其大小是
32位
。现在我可能知道LEB是zip
int
的一种格式,所以不会丢失任何位,而是额外的位。@litao3rd:恐怕我不太理解你的评论,但是如果你使用的数据大部分都是5字节,那么LEB是个糟糕的选择。关键是要用少于4个字节来表示大多数值。。。否则,您最好只使用固定的每个值4字节。是的,如果你写了一个5字节的值,前3位应该是0。我的意思是在LEB格式中,数据大部分是5字节,也就是35位。LEB128用于存储大小为32位的
int
。这样就足够工作了。我只是对它的大小感到困惑。感谢并抱歉我的英语。@litao3rd:它最多使用5个字节来表示32位,是的。但同样,我希望它被选择用于大多数值可以用1-3字节表示的数据。