VB.NET中字符串的十六进制数(非ASCII十六进制值)
我尝试过搜索这个,但大多数人只是想将十六进制值转换为ASCII等价值。这不是我想要做的 我想看看VB.NET是否有一个简单的内置函数来实现这一点:VB.NET中字符串的十六进制数(非ASCII十六进制值),vb.net,string,hex,Vb.net,String,Hex,我尝试过搜索这个,但大多数人只是想将十六进制值转换为ASCII等价值。这不是我想要做的 我想看看VB.NET是否有一个简单的内置函数来实现这一点: Private Function NibbleToString(ByVal Nibble As Byte) As String Dim retval As String = String.Empty Select Case Nibble Case &H0 retval = "0
Private Function NibbleToString(ByVal Nibble As Byte) As String
Dim retval As String = String.Empty
Select Case Nibble
Case &H0
retval = "0"
Case &H1
retval = "1"
Case &H2
retval = "2"
Case &H3
retval = "3"
Case &H4
retval = "4"
Case &H5
retval = "5"
Case &H6
retval = "6"
Case &H7
retval = "7"
Case &H8
retval = "8"
Case &H9
retval = "9"
Case &HA
retval = "A"
Case &HB
retval = "B"
Case &HC
retval = "C"
Case &HD
retval = "D"
Case &HE
retval = "E"
Case &HF
retval = "F"
End Select
Return retval
End Function
有没有更优雅的方法来完成与该代码相同的事情?使用
ToString
:
如果出于某种原因,您确实希望一次执行一个字节,那么您可以事先屏蔽/移出数字的各个位:
Dim b As Byte = &H5E
Console.WriteLine((b And &HF).ToString("X")) ' displays "E" (low nibble)
Console.WriteLine((b >> 4).ToString("X")) ' displays "5" (high nibble)
作为一项功能
<FlagsAttribute()> _
Public Enum whichNibble As Integer
'byte
'7654 3210
' msn lsn
lsn = 1
msn = 2
both = lsn Or msn
End Enum
Private Function GetNibble(ByVal aByte As Byte, _
Optional ByVal whNib As whichNibble = whichNibble.lsn) As String
Select Case whNib
Case whichNibble.both
Return aByte.ToString("X2")
Case whichNibble.lsn
Return (aByte And &HF).ToString("X")
Case whichNibble.msn
Return ((aByte >> 4) And &HF).ToString("X")
End Select
End Function
_
可设置为整数的公共枚举
'字节
'7654 3210
'msn lsn
lsn=1
msn=2
两者都=lsn或msn
结束枚举
私有函数GetNibble(ByVal aByte作为字节_
可选ByVal whNib As whichNibble=whichNibble.lsn)作为字符串
选择案例whNib
两种情况都可以
返回aByte.ToString(“X2”)
Case whichNibble.lsn
返回(aByte和&HF).ToString(“X”)
Case whichNibble.msn
返回((aByte>>4)和&HF).ToString(“X”)
结束选择
端函数
谢谢!这正是我想要的。效果很好。
<FlagsAttribute()> _
Public Enum whichNibble As Integer
'byte
'7654 3210
' msn lsn
lsn = 1
msn = 2
both = lsn Or msn
End Enum
Private Function GetNibble(ByVal aByte As Byte, _
Optional ByVal whNib As whichNibble = whichNibble.lsn) As String
Select Case whNib
Case whichNibble.both
Return aByte.ToString("X2")
Case whichNibble.lsn
Return (aByte And &HF).ToString("X")
Case whichNibble.msn
Return ((aByte >> 4) And &HF).ToString("X")
End Select
End Function