ULEB128可变长度整数编码

问题描述

我正在尝试编写ULEB 128解析器,该解析器将使用无符号字节数组并返回所需的值和移位。如果正确理解我是否有ubyte[] list = [0x1b,0x02,0x03],那么我要做的就是看0x1b,这里的高位大于0,所以我必须读取下一个字节。最后,由于第二个字节的高位是0x20b,因此它应返回0x03,移位2,而不包括0。如果我的逻辑正确,那么我的主要问题就是D中的字节操作,即如何检查高位或低位。

解决方法

如果我的逻辑是正确的,我的主要问题是D中的字节操作,即如何检查高位或低位。

就像在C中一样。您可以使用按位和(&)和二进制移位(<<)。 如果您需要一个示例,druntime会执行以下操作: https://github.com/dlang/druntime/blob/0dfc0ce5aef1fde00713b56e9be99dcdfb04d171/src/rt/backtrace/dwarf.d#L490-L534

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...