【原创】一些简易实用的数据转换函数

vb.net

自己收集或编写的简易数据转换函数,包括图像与数据互相转换、繁简互相转换、半角全角互相转换、字符解析为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

转载于:https://www.cnblogs.com/clso/archive/2011/02/23/1961872.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值