【问题标题】:Hex number (not ASCII hex value) to string in VB.NET十六进制数(不是 ASCII 十六进制值)到 VB.NET 中的字符串
【发布时间】:2011-04-14 10:42:04
【问题描述】:

我试过搜索这个,但大多数人只是想将十六进制值转换为它们的 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"
        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

有没有更优雅的方式来完成与该代码相同的事情?

【问题讨论】:

    标签: vb.net string hex


    【解决方案1】:

    ToStringX format specifier 一起使用:

    Dim b As Byte = &HA3
    Console.WriteLine(b.ToString("X"))    ' displays "A3"
    
    Dim i As Integer = &H12AB89EF
    Console.WriteLine(i.ToString("X"))    ' displays "12AB89EF"
    

    如果您出于某种原因确实只想一次咬一口,那么您可以事先屏蔽/移出数字的各个位:

    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)
    

    【讨论】:

    • 谢谢!这正是我一直在寻找的。效果很好。
    【解决方案2】:

    作为一个函数

    <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
    

    【讨论】:

      猜你喜欢
      • 2011-12-09
      • 1970-01-01
      • 2015-05-22
      • 1970-01-01
      • 1970-01-01
      • 2010-10-04
      • 2013-04-28
      • 2017-03-11
      • 2014-01-02
      相关资源
      最近更新 更多