将UINTVAR(VLQ)读入C#int
是否有人使用.Net代码来读取/管理VLQ?有一个Java方法readMultiByteInteger,它接受字节流并根据VLQ规范将它们转换为int,但我找不到与之等价的C 来自维基百科:可变长度量(VLQ)是一种通用代码,它使用任意数量的二进制八位字节(8位字节)来表示无限大的整数 有人有主意吗?(除了切换到Java之外?) 谢谢,将UINTVAR(VLQ)读入C#int,c#,.net,C#,.net,是否有人使用.Net代码来读取/管理VLQ?有一个Java方法readMultiByteInteger,它接受字节流并根据VLQ规范将它们转换为int,但我找不到与之等价的C 来自维基百科:可变长度量(VLQ)是一种通用代码,它使用任意数量的二进制八位字节(8位字节)来表示无限大的整数 有人有主意吗?(除了切换到Java之外?) 谢谢, Paul嗨,我已经创建了转换int->uintvar的扩展方法,没有内置的支持 public static class BinaryExtension {
Paul嗨,我已经创建了转换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);
}
}
}
嗨,我已经创建了转换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);
}
}
}
谢谢你,普拉尚特。不幸的是,我仍在使用.NET2.0,但我可以改进您的代码。e、 我可以使它成为一个静态实用方法,而不是一个扩展。再次感谢。是的,你可以用静态的方法,也可以清理一些难看的代码。谢谢Prashant。不幸的是,我仍在使用.NET2.0,但我可以改进您的代码。e、 我可以使它成为一个静态实用方法,而不是一个扩展。再次感谢。是的,你可以使它成为静态方法,也可以清理一些丑陋的代码