將16進位字串轉換為 VB.NET 數值變數型別
strHex | String | - | 必須 | (無) | 16進位字串值 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
nVarType | VariantType | 4 | 可省略 | Integer | VB.NET 物件型態常數:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
bBigEndian | Boolean | 1 | 可省略 | False | 由於 Windows 採用 Little Endian ,故預設改依記憶體順序排列,欲輸出類同 Hex 先高位元後低位元者,則需設定 BigEndian 引數為 True |
數值物件 (Object)
Debug.WriteLine(HexToVariant("01", VariantType.Boolean)) ' 傳回 True Debug.WriteLine(HexToVariant("0F", VariantType.Byte)) ' 傳回 15 Debug.WriteLine(HexToVariant("8974", VariantType.Char)) ' 傳回 璉 Debug.WriteLine(HexToVariant("BCA53938B6B2E240", VariantType.Date)) ' 傳回 2004/11/2 下午 04:39:53 Debug.WriteLine(HexToVariant("FFFFFFFFFFFFFFFFFFFFFFFF00000080", VariantType.Decimal)) ' 傳回 -79228162514264337593543950335 Debug.WriteLine(HexToVariant("FFFFFFFFFFFFEFFF", VariantType.Double)) ' 傳回 -1.79769313486232E+308 Debug.WriteLine(HexToVariant("01", VariantType.Integer)) ' 傳回 1 Debug.WriteLine(HexToVariant("0000000000000001", VariantType.Long, True)) ' 傳回 1 Debug.WriteLine(HexToVariant("0080", VariantType.Short, True)) ' 傳回 128 Debug.WriteLine(HexToVariant("0000803F", VariantType.Single)) ' 傳回 1 Debug.WriteLine(HexToVariant("F957FA579E8A008A", VariantType.String)) ' 傳回 培基語言 Dim arrDouble = HexToVariant("9A9999999999B93F555555555555D53F000000000000F0BF", VariantType.Array Or VariantType.Double) ' 傳回 {0.1, 0.33333333333333331, -1.0}
目前僅支援布林(Boolean)、位元組(Byte)、字元(Char)、短整數(Short)、長整數(Inetger)、單精度變數(Single)、倍精度變數(Double)、日期(Date)、字串(String)、十進位值(Decimal)、陣列(Array),其他目前無需求,暫不考慮發展!
字串傳回的是 UniCode 的 16 進位值,若需傳回 ASCII 的 16 進位值(存在檔案中的 16 進位值),在 .Net 應以 Encoding 轉換,或參見 StringChangeCodePages 函數。
由於難以指定字串分割處,故不支援轉為陣列字串變數。
本函數若位元組數不足,將自動補 0 以完成轉換。
本函數日期轉換將採用 VB/VBA 中 Variant Date 的記憶體方式處理。
Visual Studio .Net 2002 以後相容版本 | StrTools.vb
modStrTools 函式庫 | HexToByte | ByteToVariant | GetByteOfVariantType
|