![vb.net](https://i-blog.csdnimg.cn/blog_migrate/b00229a6133de7f86d95f269339e7760.png)
自己收集或编写的简易数据转换函数,包括图像与数据互相转换、繁简互相转换、半角全角互相转换、字符解析为Color、清除数组中相同字符串、获取字符串字节长、int与uint之间的安全转换。
示例代码为VB.NET
'''
<summary>
将图像转换为数据
</summary>
Shared Function m_pic2bytes( ByVal pic As Bitmap) As Byte ()
Using ms As New IO.MemoryStream
pic.Save(ms, pic.RawFormat)
Dim b(ms.Length - 1 ) As Byte
ms.Position = 0
ms.Read(b, 0 , b.Length - 1 )
Return b
End Using
End Function
''' <summary> 将数据转换为图像 </summary>
Shared Function m_bytes2pic( ByVal ByteArray As Byte ()) As Bitmap
Using ms As New IO.MemoryStream(ByteArray)
Dim bit As New Bitmap(ms)
Return bit
End Using
End Function
''' <summary> int与uint安全互转 不改变内存结构 </summary>
Shared Function m_int2uint( ByVal int As Integer ) As UInteger
If int >= 0 Then Return int
int = Not int
Return Not CType ( int , UInteger )
End Function
''' <summary> int与uint安全互转 不改变内存结构 </summary>
Shared Function m_uint2int( ByVal uint As UInteger ) As Integer
If uint <= Integer .MaxValue Then Return uint
uint = Not uint
Return Not CType (uint, Integer )
End Function
''' <summary> 获取字符串字节长度 </summary>
Shared Function GetStringLength( ByVal str As String ) As Integer
Return Encoding.Default.GetBytes( str ).Length
End Function
''' <summary> 清除字符串数组中的重复项 </summary>
''' <param name="strArray"></param>
''' <param name="maxElementLength"> 字符串数组中单个元素的最大长度 </param>
Shared Function DistinctStringArray( ByVal strArray As String (), ByVal maxElementLength As Integer ) As String ()
Dim h As New Hashtable
For Each s As String In strArray
Dim k As String = s
If maxElementLength > 0 And k.Length > maxElementLength Then
k = k.Substring( 0 , maxElementLength)
End If
h(k.Trim) = s
Next
Dim result(h.Count) As String
h.Keys.CopyTo(result, 0 )
Return result
End Function
''' <summary> 返回数据格式化文本 </summary>
Shared Function FormatBytesStr( ByVal bytes As Integer ) As String
If bytes > 1073741824 Then
Return (bytes / 1073741824 ).ToString( " 0 " ) + " G "
ElseIf bytes > 1048576 Then
Return (bytes / 1048576 ).ToString( " 0 " ) + " M "
ElseIf bytes > 1024 Then
Return (bytes / 1024 ).ToString( " 0 " ) + " K "
Else
Return bytes.ToString + " 字节 " ' "bytes"
End If
End Function
''' <summary> 从字符串分析出颜色 </summary>
Shared Function ToColor( ByVal color As String ) As Color
If Not color.StartsWith( " # " ) Then
Return System.Drawing.Color.FromName(color)
End If
Dim red, green, blue As Integer
Dim rgb As Char ()
color = color.TrimStart( " # " )
color = Regex.Replace(color.ToLower, " g-zG-Z " , "" )
Select Case color.Length
Case 3
rgb = color.ToCharArray
red = Convert.ToInt32( rgb ( 0 ).ToString + rgb ( 0 ).ToString, 16 )
green = Convert.ToInt32( rgb ( 1 ).ToString + rgb ( 1 ).ToString, 16 )
blue = Convert.ToInt32( rgb ( 2 ).ToString + rgb ( 2 ).ToString, 16 )
Return System.Drawing.Color.FromArgb(red, green, blue)
Case 6
rgb = color.ToCharArray
red = Convert.ToInt32( rgb ( 0 ).ToString + rgb ( 1 ).ToString, 16 )
green = Convert.ToInt32( rgb ( 2 ).ToString + rgb ( 3 ).ToString, 16 )
blue = Convert.ToInt32( rgb ( 4 ).ToString + rgb ( 5 ).ToString, 16 )
Return System.Drawing.Color.FromArgb(red, green, blue)
Case Else
Return System.Drawing.Color.FromArgb( 0 )
End Select
End Function
''' <summary> 简体转换为繁体 </summary>
Shared Function ToTraditional( ByVal str As String ) As String
Return StrConv ( str , VbStrConv.TraditionalChinese)
End Function
''' <summary> 繁体转换为简体 </summary>
Shared Function ToSimplified( ByVal str As String ) As String
Return StrConv ( str , VbStrConv.SimplifiedChinese)
End Function
''' <summary> 全角转换为半角 </summary>
Shared Function ToDBC( ByVal str As String ) As String
Dim ca As Char () = str .ToCharArray
Dim c As Integer
For i As Integer = 0 To ca.Length - 1
c = AscW(ca(i))
If c = 12288 Then ' 如果是空格
ca(i) = ChrW ( 32 )
ElseIf c > 65280 AndAlso c < 65375 Then ' 如果是其他全角字符
ca(i) = ChrW (c - 65248 )
End If
Next
Return New String (ca)
End Function
''' <summary> 半角转换为全角 </summary>
Shared Function ToSBC( ByVal str As String ) As String
Dim ca As Char () = str .ToCharArray
Dim c As Integer
For i As Integer = 0 To ca.Length - 1
c = AscW(ca(i))
If c = 32 Then
ca(i) = ChrW ( 12288 )
ElseIf c < 127 Then
ca(i) = ChrW (c + 65248 )
End If
Next
Return New String (ca)
End Function
Shared Function m_pic2bytes( ByVal pic As Bitmap) As Byte ()
Using ms As New IO.MemoryStream
pic.Save(ms, pic.RawFormat)
Dim b(ms.Length - 1 ) As Byte
ms.Position = 0
ms.Read(b, 0 , b.Length - 1 )
Return b
End Using
End Function
''' <summary> 将数据转换为图像 </summary>
Shared Function m_bytes2pic( ByVal ByteArray As Byte ()) As Bitmap
Using ms As New IO.MemoryStream(ByteArray)
Dim bit As New Bitmap(ms)
Return bit
End Using
End Function
''' <summary> int与uint安全互转 不改变内存结构 </summary>
Shared Function m_int2uint( ByVal int As Integer ) As UInteger
If int >= 0 Then Return int
int = Not int
Return Not CType ( int , UInteger )
End Function
''' <summary> int与uint安全互转 不改变内存结构 </summary>
Shared Function m_uint2int( ByVal uint As UInteger ) As Integer
If uint <= Integer .MaxValue Then Return uint
uint = Not uint
Return Not CType (uint, Integer )
End Function
''' <summary> 获取字符串字节长度 </summary>
Shared Function GetStringLength( ByVal str As String ) As Integer
Return Encoding.Default.GetBytes( str ).Length
End Function
''' <summary> 清除字符串数组中的重复项 </summary>
''' <param name="strArray"></param>
''' <param name="maxElementLength"> 字符串数组中单个元素的最大长度 </param>
Shared Function DistinctStringArray( ByVal strArray As String (), ByVal maxElementLength As Integer ) As String ()
Dim h As New Hashtable
For Each s As String In strArray
Dim k As String = s
If maxElementLength > 0 And k.Length > maxElementLength Then
k = k.Substring( 0 , maxElementLength)
End If
h(k.Trim) = s
Next
Dim result(h.Count) As String
h.Keys.CopyTo(result, 0 )
Return result
End Function
''' <summary> 返回数据格式化文本 </summary>
Shared Function FormatBytesStr( ByVal bytes As Integer ) As String
If bytes > 1073741824 Then
Return (bytes / 1073741824 ).ToString( " 0 " ) + " G "
ElseIf bytes > 1048576 Then
Return (bytes / 1048576 ).ToString( " 0 " ) + " M "
ElseIf bytes > 1024 Then
Return (bytes / 1024 ).ToString( " 0 " ) + " K "
Else
Return bytes.ToString + " 字节 " ' "bytes"
End If
End Function
''' <summary> 从字符串分析出颜色 </summary>
Shared Function ToColor( ByVal color As String ) As Color
If Not color.StartsWith( " # " ) Then
Return System.Drawing.Color.FromName(color)
End If
Dim red, green, blue As Integer
Dim rgb As Char ()
color = color.TrimStart( " # " )
color = Regex.Replace(color.ToLower, " g-zG-Z " , "" )
Select Case color.Length
Case 3
rgb = color.ToCharArray
red = Convert.ToInt32( rgb ( 0 ).ToString + rgb ( 0 ).ToString, 16 )
green = Convert.ToInt32( rgb ( 1 ).ToString + rgb ( 1 ).ToString, 16 )
blue = Convert.ToInt32( rgb ( 2 ).ToString + rgb ( 2 ).ToString, 16 )
Return System.Drawing.Color.FromArgb(red, green, blue)
Case 6
rgb = color.ToCharArray
red = Convert.ToInt32( rgb ( 0 ).ToString + rgb ( 1 ).ToString, 16 )
green = Convert.ToInt32( rgb ( 2 ).ToString + rgb ( 3 ).ToString, 16 )
blue = Convert.ToInt32( rgb ( 4 ).ToString + rgb ( 5 ).ToString, 16 )
Return System.Drawing.Color.FromArgb(red, green, blue)
Case Else
Return System.Drawing.Color.FromArgb( 0 )
End Select
End Function
''' <summary> 简体转换为繁体 </summary>
Shared Function ToTraditional( ByVal str As String ) As String
Return StrConv ( str , VbStrConv.TraditionalChinese)
End Function
''' <summary> 繁体转换为简体 </summary>
Shared Function ToSimplified( ByVal str As String ) As String
Return StrConv ( str , VbStrConv.SimplifiedChinese)
End Function
''' <summary> 全角转换为半角 </summary>
Shared Function ToDBC( ByVal str As String ) As String
Dim ca As Char () = str .ToCharArray
Dim c As Integer
For i As Integer = 0 To ca.Length - 1
c = AscW(ca(i))
If c = 12288 Then ' 如果是空格
ca(i) = ChrW ( 32 )
ElseIf c > 65280 AndAlso c < 65375 Then ' 如果是其他全角字符
ca(i) = ChrW (c - 65248 )
End If
Next
Return New String (ca)
End Function
''' <summary> 半角转换为全角 </summary>
Shared Function ToSBC( ByVal str As String ) As String
Dim ca As Char () = str .ToCharArray
Dim c As Integer
For i As Integer = 0 To ca.Length - 1
c = AscW(ca(i))
If c = 32 Then
ca(i) = ChrW ( 12288 )
ElseIf c < 127 Then
ca(i) = ChrW (c + 65248 )
End If
Next
Return New String (ca)
End Function