Frage : 10 Linien C# zur VB.NET Übersetzungsüberwachung

Hallo,

I Notwendigkeit wurde einem Experten, die Übersetzung einiger Linien des Codes, von C# VB.NET
I zum Gebrauch VB.NET 2008 und ich zu überwachen einem StringToHex und ein HexToString, die Unicode Buchstaben stützen, in VB.NET benötigt. Ich fand die Probe jener zwei Funktionen in C#, und habe diesen Code für identischen VB.NET.

The angepassten VB.NET Codearbeiten fast, der einzige Unterschied bin der in der VB.NET Version erscheine ein weiterer Buchstabe, am Ende des Resultats angepasst. Dieser Buchstabe ist: Unicode Buchstabe „ERSETZUNGSZEICHEN“ (U+FFFD).

Although, habe ich Code diesen Buchstaben beseitigen gelassen, möchte ich saubere Funktionen von StringToHex und von HexToString in VB.NET.

So haben, bin ich interessiert, wo genau ich die ungenaue Anpassung vom C# Code zum VB.NET Code gebildet habe, und zu können den Code regeln, denn, saubere Funktionen zu haben, ohne verwechselt dem Unicode character.

The C# Code, den ich fand, ist an dieser Seite:
http://www.eggheadcafe.com /sample-code/csharp.NET/5c5e050f-7509-4ed5-aa58-6fd01ff2b3c6/c-net.aspx

The VB.NET Anpassung des C# Codes ist dieses:
-----------------------------------------------------------------------------------------------------------
Öffentlichkeit geteilte Funktion ConvertStringToHex (ByVal eingegeben als Schnur-, ByValkodierung als System.Text.Encoding) als String
verdunkeln stringBytes () als Byte = encoding.GetBytes (Eingang)
schwache sbBytes als StringBuilder = neues StringBuilder (stringBytes.Length * 2)

schwaches b als Byte
für jedes b im stringBytes
sbBytes.AppendFormat (“ {0: X2} „, b)
Next

RückholsbBytes.ToString ()
Ende Function

Öffentlichkeit teilte Funktion ConvertHexToString (ByVal hexInput als Schnur-, ByValkodierung als System.Text.Encoding) als String
verdunkeln numberChars als ganze Zahl = hexInput.Length
schwache Bytes () als Byte = neues Byte (numberChars/2) {}
schwaches i als Integer
für i = 0 zu den numberChars - 1 Bytes des Schrittes 2
(i/2) = Convert.ToByte (hexInput.Substring (i, 2), 16)
Next

ReturnValue = encoding.GetString (Bytes)

wenn (AscW (ReturnValue.Substring (ReturnValue. Length - 1, 1)) = 65533) Then
ReturnValue = ReturnValue.Substring (0, ReturnValue.Length - 1)
Ende If

RückholReturnValue
Ende Function
-----------------------------------------------------------------------------------------------------------

The Unterlagen für diesen unerwünschten Unicode Buchstaben sind an dieser Seite:
http://www.fileformat.info /info/unicode/char/fffd/index.htm


Thank Sie sehr viel im Voraus.

Antwort : 10 Linien C# zur VB.NET Übersetzungsüberwachung

Es gibt nicht *really* ein Extrabuchstaben. In ConvertHexToString als Sie die Reihe „Bytes“ verursachten, sagten Sie, dass der oberste Index der Reihe „numberChars/2“ sein sollte, die in diesem Test bis 14 herauskommt. Merken, dass dieses, wie ich sagte, der oberste Index, NICHT die Zahl von den Schlitzen in der Reihe ist. Dies heißt, dass der Anruf zu encoding.GetString () versucht, einen uninitialized Schlitz der Reihe in einen Buchstaben umzuwandeln. Sie müssen die Zahl Schlitzen in der Reihe verringern, indem Sie Linie 31 Ihres letzten Pfostens durch ersetzen:
1:
Schwache Bytes () als Byte = neues Byte ((numberChars/2) - 1) {}
Weitere Lösungen  
 
programming4us programming4us