2011-02-02 75 views
4

我最近使用.net反射器来查看一些DLL文件,并且我注意到一个使用十六进制而不是十进制来表示它的数组索引。为什么使用十六进制数组索引

public Random(int Seed) 
{ 
    this.SeedArray = new int[0x38]; 
    int num2 = 0x9a4ec86 - Math.Abs(Seed); 
    this.SeedArray[0x37] = num2; 
    int num3 = 1; 
    for (int i = 1; i < 0x37; i++) 
    { 
     int index = (0x15 * i) % 0x37; 
     this.SeedArray[index] = num3; 
     num3 = num2 - num3; 
     if (num3 < 0) 
     { 
      num3 += 0x7fffffff; 
     } 
     num2 = this.SeedArray[index]; 
    } 
    for (int j = 1; j < 5; j++) 
    { 
     for (int k = 1; k < 0x38; k++) 
     { 
      this.SeedArray[k] -= this.SeedArray[1 + ((k + 30) % 0x37)]; 
      if (this.SeedArray[k] < 0) 
      { 
       this.SeedArray[k] += 0x7fffffff; 
      } 
     } 
    } 
    this.inext = 0; 
    this.inextp = 0x15; 
    Seed = 1; 
} 

为什么作者使用十六进制而不是十进制?

+2

因为他可能是从C源代码:) – leppie 2011-02-02 17:27:10

回答

5

整数文字最初是否以十六进制或十进制(或者,假设编程语言支持它为三进制)编写在源代码中,不会写入IL中。你看到的是猜想由反编译器。

事实上,你可能能够通过设置来查看所有十进制那些文字的:

​​