⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 conversion.vb

📁 大名鼎鼎的mono是.NET平台的跨平台(支持linux
💻 VB
📖 第 1 页 / 共 2 页
字号:
'' Conversion.vb'' Author:'   Mizrahi Rafael (rafim@mainsoft.com)'   Guy Cohen (guyc@mainsoft.com)'' Copyright (C) 2002-2006 Mainsoft Corporation.' Copyright (C) 2004-2006 Novell, Inc (http://www.novell.com)'' Permission is hereby granted, free of charge, to any person obtaining' a copy of this software and associated documentation files (the' "Software"), to deal in the Software without restriction, including' without limitation the rights to use, copy, modify, merge, publish,' distribute, sublicense, and/or sell copies of the Software, and to' permit persons to whom the Software is furnished to do so, subject to' the following conditions:' ' The above copyright notice and this permission notice shall be' included in all copies or substantial portions of the Software.' ' THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,' EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF' MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND' NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE' LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION' OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION' WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.'Imports SystemImports System.ReflectionImports Microsoft.VisualBasic.CompilerServicesImports System.GlobalizationNamespace Microsoft.VisualBasic    Public Module Conversion        Public Function ErrorToString() As String            Return Information.Err.Description        End Function        Public Function ErrorToString(ByVal ErrorNumber As Integer) As String            Dim rm As New Resources.ResourceManager("strings", [Assembly].GetExecutingAssembly())            Dim strDescription As String#If TRACE Then            Console.WriteLine("TRACE:Conversion.ErrorToString:input:" + ErrorNumber.ToString())#End If            'FIXMSDN: If (ErrorNumber < 0) Or (ErrorNumber >= 65535) Then            If (ErrorNumber >= 65535) Then                Throw New ArgumentException("Error number must be within the range 0 to 65535.")            End If            If (ErrorNumber = 0) Then                Return ""            End If            strDescription = rm.GetString("ERR" + ErrorNumber.ToString())            'Application-defined or object-defined error.            If strDescription Is Nothing Then                strDescription = rm.GetString("ERR95")            End If            Return strDescription        End Function        Public Function Fix(ByVal Number As Decimal) As Decimal            Return Math.Sign(Number) * Conversion.Int(System.Math.Abs(Number))        End Function        Public Function Fix(ByVal Number As Double) As Double            Return Math.Sign(Number) * Conversion.Int(System.Math.Abs(Number))        End Function        Public Function Fix(ByVal Number As Integer) As Integer            Return Number        End Function        Public Function Fix(ByVal Number As Long) As Long            Return Number        End Function        Public Function Fix(ByVal Number As Object) As Object            'FIXME:ArgumentException 5 Number is not a numeric type.             If Number Is Nothing Then                Throw New ArgumentNullException("Number", "Value can not be null.")            End If            If TypeOf Number Is Byte Then                Return Conversion.Fix(Convert.ToByte(Number))            ElseIf TypeOf Number Is Boolean Then                If (Convert.ToBoolean(Number)) Then                    Return 1                End If                Return 0            ElseIf TypeOf Number Is Long Then                Return Conversion.Fix(Convert.ToInt64(Number))            ElseIf TypeOf Number Is Decimal Then                Return Conversion.Fix(Convert.ToDecimal(Number))            ElseIf TypeOf Number Is Short Then                Return Conversion.Fix(Convert.ToInt16(Number))            ElseIf TypeOf Number Is Integer Then                Return Conversion.Fix(Convert.ToInt32(Number))            ElseIf TypeOf Number Is Double Then                Return Conversion.Fix(Convert.ToDouble(Number))            ElseIf TypeOf Number Is Single Then                Return Conversion.Fix(Convert.ToSingle(Number))            ElseIf TypeOf Number Is String Then                Return Conversion.Fix(DoubleType.FromString(Number.ToString()))            ElseIf TypeOf Number Is Char Then                Return Conversion.Fix(DoubleType.FromString(Number.ToString()))            Else 'Date, Object                Throw New System.ArgumentException("Type of argument 'Number' is '" + Number.GetType.FullName + "', which is not numeric.")            End If        End Function        Public Function Fix(ByVal Number As Short) As Short            Return Number        End Function        Public Function Fix(ByVal Number As Single) As Single            Return Math.Sign(Number) * Conversion.Int(System.Math.Abs(Number))        End Function        Public Function Hex(ByVal Number As Byte) As String            Return Convert.ToString(Number, 16).ToUpper        End Function        Public Function Hex(ByVal Number As Integer) As String            Return Convert.ToString(Number, 16).ToUpper        End Function        Public Function Hex(ByVal Number As Long) As String            Return Convert.ToString(Number, 16).ToUpper        End Function        Public Function Hex(ByVal Number As Short) As String            Return Convert.ToString(Number, 16).ToUpper        End Function        Public Function Hex(ByVal Number As Object) As String            If Number Is Nothing Then                Throw New System.ArgumentNullException("Number", "Value cannot be null.")            End If            If (TypeOf Number Is IConvertible) Then                Dim tc As TypeCode = CType(Number, IConvertible).GetTypeCode()                Select Case tc                    Case TypeCode.Byte                        Return Hex(Convert.ToByte(Number))                    Case TypeCode.Decimal                        Return Hex(SizeDown(Convert.ToInt64(Number)))                    Case TypeCode.Double                        Return Hex(SizeDown(Convert.ToInt64(Number)))                    Case TypeCode.Int16                        Return Hex(Convert.ToInt16(Number))                    Case TypeCode.Int32                        Return Hex(Convert.ToInt32(Number))                    Case TypeCode.Int64                        Return Hex(Convert.ToInt64(Number))                    Case TypeCode.Single                        Return Hex(SizeDown(Convert.ToInt32(Number)))                    Case TypeCode.String                        Dim strNumber As String                        strNumber = Number.ToString                        If strNumber.StartsWith("&") Then                            If strNumber.Substring(1, 1).ToUpper = "O" Then                                Return Hex(SizeDown(Convert.ToInt64(strNumber.Substring(2), 8)))                            ElseIf strNumber.Substring(1, 1).ToUpper = "H" Then                                Return Hex(SizeDown(Convert.ToInt64(strNumber.Substring(2), 16)))                            Else                                Return Hex(SizeDown(Convert.ToInt64(Number)))                            End If                        Else                            Return Hex(SizeDown(Convert.ToInt64(Number)))                        End If#If NET_2_0 Then                    Case TypeCode.SByte                        Return Hex(Convert.ToSByte(Number))                    Case TypeCode.UInt16                        Return Hex(Convert.ToUInt16(Number))                    Case TypeCode.UInt32                        Return Hex(Convert.ToUInt32(Number))                    Case TypeCode.UInt64                        Return Hex(Convert.ToUInt64(Number))#End If                    Case Else                        Throw New System.ArgumentException("Argument 'Number' cannot be converted to type '" + Number.GetType.FullName + "'.")                End Select            Else                Throw New System.ArgumentException("Argument 'Number' is not a number.")            End If        End Function        Private Function SizeDown(ByVal num As Long) As Object            'If (num <= Byte.MaxValue And num >= 0) Then            '    Return CType(num, Byte)            'End If            'If (num <= SByte.MaxValue And num >= SByte.MinValue) Then            '    Return CType(num, SByte)            'End If            'If (num <= Int16.MaxValue And num >= Int16.MinValue) Then            '    Return CType(num, Int16)            'End If            'If (num <= UInt16.MaxValue And num >= 0) Then            '    Return CType(num, UInt16)            'End If            If (num <= Int32.MaxValue And num >= Int32.MinValue) Then                Return CType(num, Int32)            End If#If NET_VER >= 2.0 Then            If (num <= UInt32.MaxValue And num >= 0) Then                Return CType(num, UInt32)            End If#End If            Return num        End Function        Public Function Int(ByVal Number As Decimal) As Decimal            Return Decimal.Floor(Number)        End Function        Public Function Int(ByVal Number As Double) As Double            Return Math.Floor(Number)        End Function        Public Function Int(ByVal Number As Integer) As Integer            Return Number        End Function        Public Function Int(ByVal Number As Long) As Long            Return Number        End Function        Public Function Int(ByVal Number As Object) As Object            'FIXME:ArgumentException 5 Number is not a numeric type.             If Number Is Nothing Then                Throw New ArgumentNullException("Number", "Value can not be null.")            End If            If TypeOf Number Is Byte Then                Return Conversion.Int(Convert.ToByte(Number))            ElseIf TypeOf Number Is Boolean Then                Return Conversion.Int(Convert.ToDouble(Number))            ElseIf TypeOf Number Is Long Then                Return Conversion.Int(Convert.ToInt64(Number))            ElseIf TypeOf Number Is Decimal Then                Return Conversion.Int(Convert.ToDecimal(Number))            ElseIf TypeOf Number Is Short Then                Return Conversion.Int(Convert.ToInt16(Number))            ElseIf TypeOf Number Is Integer Then                Return Conversion.Int(Convert.ToInt32(Number))            ElseIf TypeOf Number Is Double Then                Return Conversion.Int(Convert.ToDouble(Number))            ElseIf TypeOf Number Is Single Then                Return Conversion.Int(Convert.ToSingle(Number))            ElseIf TypeOf Number Is String Then                Return Conversion.Int(Convert.ToDouble(Number))            ElseIf TypeOf Number Is Char Then                Return Conversion.Int(Convert.ToInt16(Number))            Else 'Date, Object                Throw New System.ArgumentException("Type of argument 'Number' is '" + Number.GetType.FullName + "', which is not numeric.")            End If        End Function        Public Function Int(ByVal Number As Short) As Short            Return Number        End Function        Public Function Int(ByVal Number As Single) As Single            Return System.Convert.ToSingle(Math.Floor(Number))        End Function        Public Function Oct(ByVal Number As Byte) As String            Return Convert.ToString(Number, 8).ToUpper        End Function        Public Function Oct(ByVal Number As Integer) As String            Return Convert.ToString(Number, 8).ToUpper        End Function        Public Function Oct(ByVal Number As Long) As String            Return Convert.ToString(Number, 8).ToUpper        End Function        Public Function Oct(ByVal Number As Object) As String            If Number Is Nothing Then                Throw New System.ArgumentNullException("Number", "Value cannot be null.")            End If            If (TypeOf Number Is IConvertible) Then                Dim tc As TypeCode = CType(Number, IConvertible).GetTypeCode()                Select Case tc                    Case TypeCode.Byte                        Return Oct(Convert.ToByte(Number))                    Case TypeCode.Decimal                        Return Oct(SizeDown(Convert.ToInt64(Number)))                    Case TypeCode.Double                        Return Oct(SizeDown(Convert.ToInt64(Number)))                    Case TypeCode.Int16                        Return Oct(Convert.ToInt16(Number))                    Case TypeCode.Int32                        Return Oct(Convert.ToInt32(Number))                    Case TypeCode.Int64                        Return Oct(Convert.ToInt64(Number))                    Case TypeCode.Single                        Return Oct(SizeDown(Convert.ToInt32(Number)))                    Case TypeCode.String                        Dim strNumber As String                        strNumber = Number.ToString                        If strNumber.StartsWith("&") Then                            If strNumber.Substring(1, 1).ToUpper = "O" Then                                Return Oct(SizeDown(Convert.ToInt64(strNumber.Substring(2), 8)))                            ElseIf strNumber.Substring(1, 1).ToUpper = "H" Then                                Return Oct(SizeDown(Convert.ToInt64(strNumber.Substring(2), 16)))                            Else                                Return Oct(SizeDown(Convert.ToInt64(Number)))                            End If                        Else                            Return Oct(SizeDown(Convert.ToInt64(Number)))                        End If#If NET_2_0 Then                    Case TypeCode.SByte

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -