Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.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
将UINTVAR(VLQ)读入C#int_C#_.net - Fatal编程技术网

将UINTVAR(VLQ)读入C#int

将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 {

是否有人使用.Net代码来读取/管理VLQ?有一个Java方法readMultiByteInteger,它接受字节流并根据VLQ规范将它们转换为int,但我找不到与之等价的C

来自维基百科:可变长度量(VLQ)是一种通用代码,它使用任意数量的二进制八位字节(8位字节)来表示无限大的整数

有人有主意吗?(除了切换到Java之外?)

谢谢,
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、 我可以使它成为一个静态实用方法,而不是一个扩展。再次感谢。是的,你可以使它成为静态方法,也可以清理一些丑陋的代码