[英]Converting C# code to VB.NET
我嘗試從C#轉換此代碼
a += (uint)(url[k + 0] + (url[k + 1] << 8) + (url[k + 2] << 16) + (url[k + 3] << 24));
到VB,凈我得到這個
a += CUInt(url(k + 0) + (url(k + 1) << 8) + (url(k + 2) << 16) + (url(k + 3) << 24))
我得到這個錯誤
沒有為類型“ Char”和“ Integer”定義運算符“ <<”。
誰能幫我糾正
編輯
a,b;
a = b = 0x9E3779B9;
url =字符串
您的主要問題似乎是C#允許對char進行位移位,而VB不允許。
因此,您將需要類似(未經測試)的內容
CUInt( ... + (CUint( url(k + 1) ) << 8) + ... )
但是它看起來確實像一個相當弱的HashCode。
我不知道VB,但我懷疑您可以先轉換每個網址(k + n),即
(CUint(url(k+2))<< 8)
我還假設CUint為32位假設您嘗試從4個字符中創建一個32位int,則可能需要進行更多檢查,但至少我會將其轉換為兩個方法ConvertCharArrayToUint()和另一個每個移位ShiftCharLeft(char,numBits)並在那里隱藏所有強制轉換丑陋。 我對C#感到驚訝,因為您可以像這樣移動char。
編輯:在弄清楚時,嘗試在單獨的行上執行此操作
int part_0 = Val(url(k));
int part_1 = Val(url(k+1));
int part_2 = Val(url(k+2));
...
int shifted_1 = part_1 << 8;
...
int result = part_0 + shifted_1...
您可以通過調試器逐步檢查它們,檢查類型等並全面了解正在發生的事情,然后可以根據自己的喜好來重構。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.