2014-03-13 51 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