有人使用过.Net代码来读取/管理VLQ吗?有一个Java方法readMultiByteInteger可以接受字节流,并根据VLQ规范将它们转换为int,但是我找不到与之等效的C#。
来自维基百科:可变长量(VLQ)是一种通用代码,它使用任意数量的二进制八位字节(8位字节)来表示无限大的整数。
有谁有主意吗?(除了切换到Java?)
谢谢,保罗
发布于 2009-08-05 05:49:30
嗨,我已经创建了一个扩展方法来转换int -> uintvar,没有内置的支持来这样做……
public static class BinaryExtension
{
public static IEnumerable<int> ToUIntVar(this int value)
{
string binary = Convert.ToString(value, 2);
for (int i = binary.Length; i > 0; i -= 7)
{
if (i >= 7)
{
if (i == binary.Length)
yield return Convert.ToInt32(binary.Substring(i - 7, 7).PadLeft(8, '0'), 2);
else
yield return Convert.ToInt32("1" + binary.Substring(i - 7, 7), 2);
}
else if (binary.Length < 7)
yield return Convert.ToInt32(binary.Substring(0, i).PadLeft(8, '0'), 2);
else
yield return Convert.ToInt32("1" + binary.Substring(0, i).PadLeft(7, '0'), 2);
}
}
}我知道代码看起来很难看,但它在C# 3.0上可以工作,如果你想在C# 2.0上使用这段代码,我假设你知道这个过程……
如何使用
var uIntVars = 0x0FFFFFFF.ToUIntVar();https://stackoverflow.com/questions/1231070
复制相似问题