2014-03-13 46 views
-1

我总是使用C#转换为VB.NET,它的工作原理非常完美。 但现在我有一个小问题:将C#的一行转换为VB.net

private static int[] ChunkInput(string input) 
     { 
      var numberOfBlocks = ((input.Length + 8) >> 6) + 1; 
      var blocks = new int[numberOfBlocks * 16]; 
      for (var i = 0; i < input.Length; i++) 
      { 
       blocks[i >> 2] |= input[i] << ((i % 4) * 8); 
      } 
      blocks[input.Length >> 2] |= 0x80 << ((input.Length % 4) * 8); 
      blocks[numberOfBlocks * 16 - 2] = input.Length * 8; 
      return blocks; 
     } 

一切都被我的转换器正确地转换到一个小行:

blocks[i >> 2] |= input[i] << ((i % 4) * 8); 
-> was made to : 
blocks(i >> 2) = blocks(i >> 2) Or input(i) << ((i Mod 4) * 8)` 

失败消息是: 的< < - 运算符不为“char”和“integer”类型定义。

我不知道那些字节偏移opperators真正做到,这就是为什么我不能在所有解决这个问题:(有谁能帮我吗?

+2

更换'输入(I)'和'升序(输入(I))' – Ofiris

+0

什么是数据类型,您从转换器numberOfBlocks得到 – Syler

+0

您使用的64位vb.net? – Syler

回答

-1

错误说,没有为char使用<<

试试下面的代码:
blocks(i >> 2) = blocks(i >> 2) Or Ascw(input(i)) << ((i Mod 4) * 8)

+0

谢谢,那有效:)谁投下了这个,是错误的。 – zvaenr