在VB2005下如何将一个字符串转换成Byte()数组?

来源:百度知道 编辑:UC知道 时间:2024/05/04 10:02:35
定义一个字节数组:Dim shuzu() as Byte
有一个字符串:Dim str as String = 12345 ,需要将这个字符串str转换成{&H12,&H34,&H5}数组。
使得shuzu()={&H12,&H34,&H5}
怎么实现???
用代码怎么实现呢?注:字符串长度不一定是5,有可能是123,12345678这样的。是123时要转换成{&H12,&H3},是12345678时要转换成{&H12,&H34,&H56,&H78}。就这么个意思。

Friend Class Program
' Methods
Private Shared Sub Main()
Dim p As Byte() = Program.String2ByteArray("123456789")
End Sub

Private Shared Function String2ByteArray(ByVal p As String) As Byte()
Dim len As Integer = IIf(((p.Length Mod 2) = 0), (p.Length / 2), ((p.Length / 2) + 1))
Dim x As Byte() = New Byte(len - 1) {}
Dim i As Integer
For i = 0 To x.Length - 1
x(i) = CByte(((p.Chars((i * 2)) * ChrW(16)) + p.Chars(((i * 2) + 1))))
Next i
Return x
End Function

End Class

用C#实现了你的目的,你自己转换成VB的吧:
string str = "12345";
int arrLen = (int)((str.Length+1) / 2);//数组的长度设置为字符串长度的一半,如长度为5时,数组长度为3
string[] arr = new string[arrLen];
byte[] arrB = new byte[arrLen];//用于储存转换好的字节数组
for (int i = 0; i < arr.Length; i++)
{
arr[i] = "0x";//在VB里是&#,在C#里是0x表示16进制;<