LenB () возвращает длину в байтах переменной. Наиболее распространенный пример - для строк, где он возвращает размер строки в байтах, а не количество символов, независимо от кодировки символов. Для других типов он возвращает размер объекта - размер одного существа 4. Причина, по которой они это сделают, заключается в том, что они хотели, чтобы код выживал, если будущая версия Visual Basic когда-либо изменит размер одного (не говоря уже о жесткое кодирование числа 4 при присваивании байтовому массиву).
При обновлении LenB () до .Net для строк используйте System.Text.Encoding.Unicode.GetBytes()
, чтобы получить массив, уже заполненный байтами текстовой строки. Помните, что .Net всегда использует Юникод для внутренних строк. Если вам действительно нужна другая кодировка, в пространстве имен Encoding есть несколько альтернатив. Для других типов используйте класс BitConverter
. В любом случае, не ходите построчно, так как новые методы отнимают большую часть занятой работы.
Здесь & mdash; Я помогу вам с преобразованием некоторых:
(ранее)
Dim csvOutput As New StringBuilder()
(позже)
Dim valueB() As Byte 'this gets set elsewhere and is redim-d to its size'
Dim singleValue As Single 'var for conversion
' Included because the original developer was concerned the size of a single could change
Dim singleSize As Integer = BitConverter.GetBytes(singleValue).Length
Dim NumberItems As Double
If Double.TryParse(ItemNumberCombo.Text, NumberItems) Then
For n As Integer = 0 To NumberItems - 1
singleValue = BitConverter.ToSingle(valueB, n * singleSize)
'display the result
DText(n).Text = singleValue.ToString("E6") 'CStr(singleValue)
If DataSaveCheckBox.CheckState = 1 AndAlso Not String.IsNullOrEmpty(FileNameText.Text) Then
csvOutput.Append(DText(n).Text & ",")
End If
Next n
Else
' Handle Invalid ComboBox value here- may not be an issue for you
End If
Обратите внимание, что этот код также демонстрирует StringBuilder
как намного лучший способ построения ваших данных CSV, оператор AndAlso
, методы .TryParse()
, String.IsNullOrEmpty()
и строки стандартного формата все они предназначены для замены конструкций или методов из vb6.