Vraag : 10 lijnen van C# aan Het vertaal controleren

Hallo, vereist

I een deskundige om de vertaling van een paar lijnen van code, van C# aan VB.NET
I gebruik VB.NET 2008 te controleren en ik was nodig een StringToHex en een HexToString die Karakters Unicode, in VB.NET steunen. Ik vond de steekproef van die twee functies in C#, en heb deze code voor VB.NET.

The aangepaste VB.NET bijna identieke codewerken aangepast, is het enige verschil dat in de VB.NET versie één meer karakter, aan het eind van het resultaat lijkt. Dit karakter is: Het Karakter het „KARAKTER van Unicode van de VERVANGING“ (U+FFFD).

Although, heb ik code gemaakt om dit karakter te elimineren, zou ik schone functies van StringToHex willen hebben en HexToString in VB.NET.

So, ben ik geinteresseerd om te weten waar precies ik de onnauwkeurige aanpassing van code C# aan code VB.NET heb gemaakt, en hoe te om de code te bevestigen, voor het hebben van schone functies zonder verkeerd de code/>
The C# van Unicode character.
http://www.eggheadcafe.com /sample-code/csharp.NET/5c5e050f-7509-4ed5-aa58-6fd01ff2b3c6/c-net.aspx

The VB.NET van de code C# is dit:
-
Gedeelde die Overheidsfunctie ConvertStringToHex (ByVal als Koord, het coderen ByVal als System.Text.Encoding wordt ingevoerd) als/> Schemerige stringBytes String
Schemerige sbBytes encoding.GetBytes als StringBuilder = Nieuwe StringBuilder (stringBytes.Length * 2)

Schemerige B als Byte
voor Elke B in stringBytes
sbBytes.AppendFormat (“ {0: X2} „, Overheidsfunctie ConvertHexToString van Function

Next

Terugkeer sbBytes.ToString ()/> de Gedeelde/> (ByVal hexInput als Koord, het coderen ByVal als System.Text.Encoding) als/> Schemerige numberChars String
Schemerige bytes hexInput.Length
Schemerige I als Integer
voor I = 0 aan numberChars - de bytes van 1 Stap 2
(I/2) = Convert.ToByte (hexInput.Substring (I, 2), 16)
Next

Schemerige ReturnValue = encoding.GetString (bytes)

als (AscW(ReturnValue.Substring (ReturnValue. Length - 1, 1)) = 65533) Then
ReturnValue = (0, ReturnValue.Length - 1)
het Eind van ReturnValue

/> Function
-

The- documentatie voor dit ongewenste Karakter Unicode bij deze pagina:
http://www.fileformat.info /info/unicode/char/fffd/index.htm


Thank u zeer vooraf.

Antwoord : 10 lijnen van C# aan Het vertaal controleren

Er is *really* geen extra karakter. In ConvertHexToString, toen u de serie „bytes“ cre�ërde, zei u dat de meest bovenste index van de serie zou moeten zijn „numberChars/2“, wat in deze test uit aan 14 komt. Merk op dat dit, zoals ik zei, de meest bovenste index, NIET het aantal groeven in de serie is. Dit betekent dat de vraag aan encoding.GetString () probeert om om te zetten uninitialized groef van de serie in een karakter. U moet het aantal groeven in de serie verminderen door te vervangen lijn 31 van uw laatste post met:
1:
Schemerige bytes () als Byte = Nieuwe Byte ((numberChars/2) - 1) {}
Andere oplossingen  
 
programming4us programming4us