是否有比Convert.ToString(byte,2)更快的base-2转换?

时间:2015-11-21 03:44:45

标签: .net binary converter base

有没有比使用A=xlsread('marksdata.xlsx');

更快的方式进行base-2转换

我将在循环中运行它:

Convert.ToString(byte,2)

2 个答案:

答案 0 :(得分:0)

通过将代码移出循环来创建一个可以比每次运行代码更快地编制索引的数组,您可以在每次函数调用期间节省时间。 (显然,这不是更快的base-2转换,因为它使用相同的代码进行转换。)

Private Shared SevenBitZeroPaddedBinary = Enumerable.Range(0,128) _
    .Select(Function(i) Convert.ToString(i,2).PadLeft(7,"0"c)) _
    .ToArray() 

Function varintbinaryToint(b() As Byte) As Integer
    Const b127 As Byte = 127
    Dim sb = New Text.StringBuilder

    For i = b.Length - 1 To 0 Step -1
        sb.Append(SevenBitZeroPaddedBinary(b(i) And b127))
    Next

    Return Convert.ToInt32(sb.ToString, 2)

    '--to binary      1100 0100  ‬ ‭0001 0110‬
    '--remove msb     ‭ 100 0100  ‬ ‭ 001 0110‬
    '--reverse         001 0110‬    100 0100
    '--join           10110‬1000100
    '--bin 2 int      2884
End Function

答案 1 :(得分:0)

我查看了Convert.ToString(byte,int)的源代码

它调用Native实现,所以我猜它的速度和我们一样快:

ParseNumbers.IntToString((int)value, toBase, -1, ' ', ParseNumbers.PrintAsI1)

此处的源代码:http://referencesource.microsoft.com/#mscorlib/system/parsenumbers.cs,9d6624da44b02e1f

国:

  

**类:ParseNumbers

     

**目的:解析数字和字符串的方法。

     

**所有方法都以原生方式实现。