摘要:VB.NET 一些陣列轉換
' xxxArray To ByteArray
'===========================================
''' <summary>String 轉為 Byte Array</summary>
Public Function ConvertStringToByteArray(ByVal str As String) As Byte()
Dim encoding As New System.Text.ASCIIEncoding()
Return encoding.GetBytes(str)
End Function
Public Function ConvertDoubleArrayToByteArray(ByVal dArray() As Double) As Byte()
Dim lenDoubleArray As Integer = Marshal.SizeOf(GetType(Double)) * dArray.Length
Dim ByteArray(lenDoubleArray - 1) As Byte
Marshal.Copy(dArray, 0, Marshal.UnsafeAddrOfPinnedArrayElement(ByteArray, 0), dArray.Length)
Return ByteArray
End Function
Public Function ConvertIntArrayToByteArray(ByVal iArray() As Integer) As Byte()
Dim lenIntegerArray As Integer = Marshal.SizeOf(GetType(Int32)) * iArray.Length
Dim ByteArray(lenIntegerArray - 1) As Byte
Marshal.Copy(iArray, 0, Marshal.UnsafeAddrOfPinnedArrayElement(ByteArray, 0), iArray.Length)
Return ByteArray
End Function
' ByteArray To xxxArray
'===========================================
''' <summary>Byte Array 轉為 String</summary>
Public Function ConvertByteArrayToString(ByVal byteArray() As Byte) As String
Dim encoding As New System.Text.ASCIIEncoding()
Return encoding.GetString(byteArray)
End Function
Public Function ConvertByteArrayToDoubleArray(ByVal bArray() As Byte) As Double()
Dim dArray(bArray.Length / Marshal.SizeOf(GetType(Double)) - 1) As Double
Marshal.Copy(bArray, 0, Marshal.UnsafeAddrOfPinnedArrayElement(dArray, 0), bArray.Length)
Return dArray
End Function
Public Function ConvertByteArrayToIntegerArray(ByVal bArray() As Byte) As Integer()
Dim iArray(bArray.Length / Marshal.SizeOf(GetType(Int32)) - 1) As Int32
Marshal.Copy(bArray, 0, Marshal.UnsafeAddrOfPinnedArrayElement(iArray, 0), bArray.Length)
Return iArray
End Function
' String Array To Double Array
'============================================
''' <summary>將 String Array 轉為 Double Array</summary>
Public Function ConvertStringArrayToDoubleArray(ByVal inVal() As String) As Double()
Return System.Array.ConvertAll(Of String, Double)(inVal, AddressOf DelegateStringArrayToDoubleArray)
End Function
''' <summary>將 String Array 轉為 Single Array</summary>
Private Function DelegateStringArrayToDoubleArray(ByVal inVal As String) As Double
Try
If String.IsNullOrEmpty(inVal) OrElse inVal = "*" Then
Return 0
End If
Return CSng(inVal)
Catch ex As System.Exception
Throw ex
End Try
End Function
' String Array To Integer Array
'==============================================
''' <summary>將 String Array 轉為 Integer Array</summary>
Public Function ConvertStringArrayToIntArray(ByVal inVal() As String) As Integer()
Return System.Array.ConvertAll(Of String, Integer)(inVal, AddressOf DelegateStringArrayToIntArray)
End Function
''' <summary>將 String Array 轉為 Integer Array</summary>
Private Function DelegateStringArrayToIntArray(ByVal inVal As String) As Integer
Try
If IsNumeric(inVal) = False OrElse inVal = "*" Then
Return 0
End If
Return CInt(inVal)
Catch ex As System.Exception
Throw ex
End Try
End Function
' Image To Or From Byte Array
'==============================================
''' <summary>將 Image 轉為 Byte Array</summary>
Public Function ConvertImageToByteArray(ByVal imageIn As Drawing.Image) As Byte()
Dim ms As MemoryStream = New MemoryStream
imageIn.Save(ms, System.Drawing.Imaging.ImageFormat.Gif)
Return ms.ToArray
End Function
''' <summary>將 Byte Array 轉為 Image</summary>
Public Function ConvertByteArrayToImage(ByVal byteArray() As Byte) As Drawing.Image
Dim ms As MemoryStream = New MemoryStream(byteArray)
Dim returnImage As Drawing.Image = Drawing.Image.FromStream(ms)
Return returnImage
End Function