Pergunta : 10 linhas de C# à supervisão da tradução de VB.NET

Olá!, necessidade do

I um perito supervisionar a tradução de algumas linhas de código, de C# ao uso VB.NET 2008 e mim de VB.NET
I era necessário um StringToHex e um HexToString que suportam caráteres de Unicode, em VB.NET. Eu encontrei a amostra daquelas duas funções em C#, e adaptei este código para os trabalhos adaptados/>The do código de VB.NET.


Although, eu fiz o código para eliminar este caráter, eu gostaria de ter funções limpas de StringToHex e de HexToString em VB.NET.

So, eu sou interessado saber onde exatamente eu fiz a adaptação impreciso do código de C# ao código de VB.NET, e reparar o código, porque ter funções limpas sem confundido o código que de Unicode character.

The C# eu encontrei está nesta página: o rel= " nofollow " do” _blank”” do target= de " http://www.eggheadcafe.com/sample-code/csharp.NET/5c5e050f-7509-4ed5-aa58-6fd01ff2b3c6/c-net.aspx do href= do
adaptação do /sample-code/csharp.NET/5c5e050f-7509-4ed5-aa58-6fd01ff2b3c6/c-net.aspx

The VB.NET de http://www.eggheadcafe.com do código de C# é este:
----------------------------------------------------------------------------------------------------------a função compartilhada público ConvertStringToHex do -
(ByVal entrado como a codificação da corda, do ByVal como System.Text.Encoding) como String
escurece stringBytes () como o byte = sbBytes não ofuscantes do
de encoding.GetBytes (entrada) como StringBuilder = o

b não ofuscante de StringBuilder (stringBytes.Length * 2) como Byte
para cada b no stringBytes
sbBytes.AppendFormat (” {0: X2} “, função compartilhada ConvertHexToString de Function

do fim do
do b)
Next

sbBytes.ToString () o público do retorno (hexInput de ByVal como a codificação da corda, do ByVal como System.Text.Encoding) como String
escurece numberChars como o inteiro = bytes não ofuscantes de hexInput.Length
() como o byte = o
i não ofuscante do byte (numberChars/2) {} como Integer
para i = 0 aos numberChars - 1 os bytes da etapa 2
(i/2) = o
Next

de Convert.ToByte (hexInput.Substring (i, 2), 16) escurecem o

de ReturnValue = de encoding.GetString (bytes) se (AscW (ReturnValue.Substring (ReturnValue. Length - 1, 1)) = 65533) Extremidade do retorno Function
de If

ReturnValue
do fim do
de Then
ReturnValue = de ReturnValue.Substring (0, ReturnValue.Length - 1)----------------------------------------------------------------------------------------------------------a documentação do -

The para este caráter indesejado de Unicode está nesta página: rel= " nofollow " do” _blank”” do target= de " http://www.fileformat.info/info/unicode/char/fffd/index.htm do href= do
/info/unicode/char/fffd/index.htm


Thank de http://www.fileformat.info você muito adiantado.
class= do

Resposta : 10 linhas de C# à supervisão da tradução de VB.NET

Não há um *really* um o caráter extra. Em ConvertHexToString, quando você criou a disposição “bytes”, você disse que o índice o mais mais alto da disposição deve ser os “numberChars/2”, que neste teste sai a 14. Anotar que isto é, como eu disse, o índice o mais mais alto, NÃO o número dos entalhes na disposição. Isto significa que a chamada a encoding.GetString () está tentando converter um entalhe uninitialized da disposição em um caráter. Você precisa de reduzir o número de entalhes na disposição substituindo a linha 31 de seu último borne com:
1:
Bytes não ofuscantes () como o byte = byte novo ((numberChars/2) - 1) {}
Outras soluções  
 
programming4us programming4us