Fråga : 10 fodrar av C# till att övervaka för VB.NET-översättning

Hi behov för

I ett sakkunnigt att övervaka översättningen av några fodrar av kodifierar, från C# till bruk VB.NET 2008 och mig för VB.NET
I behövdes en StringToHex och en HexToString, som stöttar Unicode tecken, i VB.NET. I grundar ta prov av de två fungerar i C# och har anpassat detta kodifierar för VB.NET.

The anpassad VB.NET kodifierar nästan identiska arbeten, den enda skillnaden är det i VB.NET-versionen syns ett mer tecken, på avsluta av resultatet. Detta tecken är: Unicode tecken ”UTBYTESTECKEN” (U+FFFD).

Although, har jag gjort för att kodifiera för att avlägsna detta tecken, mig skulle något liknande för att ha rengöring fungerar av StringToHex och HexToString i VB.NET.

So, I-förmiddagen som intresseras för att veta var exakt jag har gjort den felaktiga anpassningen av C# att kodifiera till VB.NET kodifierar och hur man fixar kodifiera, for ha rengöring fungerar, utan missförstått Unicoden character.

The C# kodifierar funnit I är på denna sida: för href=" http://www.eggheadcafe.com/sample-code/csharp.NET/5c5e050f-7509-4ed5-aa58-6fd01ff2b3c6/c-net.aspx” för
anpassning för http://www.eggheadcafe.com /sample-code/csharp.NET/5c5e050f-7509-4ed5-aa58-6fd01ff2b3c6/c-net.aspx

The VB.NET av C#en kodifierar är denna:
----------------------------------------------------------------------------------------------------------delad allmänhet för -
fungerar ConvertStringToHex (ByVal matar in som stränger, ByVal kodningen som System.Text.Encoding), som String
dunkla stringBytes () som byte = sbBytes för
för encoding.GetBytes (mata in), dunkla som StringBuilder = ny StringBuilder (stringBytes.Length * 2)

dunkelt b som Byte
för varje b i stringBytes
sbBytes.AppendFormat (” {0: X2} ”,
Next

för b) som återgång
för sbBytes.ToString () avslutar delad Function

allmänhet, fungerar ConvertHexToString (ByVal hexInput som stränger, ByVal kodningen som System.Text.Encoding) som String
dunkla numberChars som heltal = dunkla byte för hexInput.Length
() som byte = ny
dunkelt I för byten (numberChars/2) {} som Integer
för I = 0 till numberChars - 1 kliver byte för 2
(I/2) =
Next

dunkel ReturnValue för Convert.ToByte (hexInput.Substring (I, 2), 16) = för encoding.GetString (byte)

om (AscW(ReturnValue.Substring (ReturnValue. Length - 1, 1)) = 65533) Then
ReturnValue = för ReturnValue.Substring (0, ReturnValue.Length - 1)
avslutar If

som återgång ReturnValue
avslutar Function
----------------------------------------------------------------------------------------------------------dokumentation för -

The för detta undesired Unicode tecken är på denna sida: för href=" http://www.fileformat.info/info/unicode/char/fffd/index.htm” för
http://www.fileformat.info /info/unicode/char/fffd/index.htm


Thank dig mycket i advance.
" klar "

Svar : 10 fodrar av C# till att övervaka för VB.NET-översättning

Det finns inte *really* per extra tecken. I ConvertHexToString då du skapade samlingen ”byte”, du sade att det mest upper-most indexet av samlingen bör vara ”numberChars/2”, som i denna testar kommer ut till 14. Notera att detta är, som jag sade, det mest upper-most indexet, INTE numrera av springor i samlingen. Detta hjälpmedel att appellen till encoding.GetString () är pröva att konvertera en uninitialized springa av samlingen in i ett tecken. Du behöver att förminska numrera av springor i samlingen, genom att byta ut, fodrar 31 av din jumbo postar med:
1:
Dunkla byte () som byte = ny byte ((numberChars/2) - 1) {}
Andra lösningar  
 
programming4us programming4us