如何将数字转换为& H4998等格式

时间:2017-05-03 03:47:12

标签: vb.net numbers short unsigned-integer

我有一些像这样的源代码:

If p.Type = &H1 Then
v = p.Value(0).ToString()
ElseIf p.Type = &H2 Then

我想让函数将每个'p.Type'打印到控制台(测试前),但是它们打印成简单的数字(1134或56等)。 Intellisense告诉我& H1是无符号整数,p.Type被声明为short。 我如何让Console.Writeline以&符号和H?

的格式显示它们

提前谢谢。

Friend Function DisplayHexNumber(ByVal inputvalue As UInt32, Optional ByVal asbasic As Boolean = True) As String

    Dim bulb As String = "Error"
    Try
        bulb = Hex(inputvalue)
        If asbasic = True Then
            bulb = "&H" & bulb.ToString
        Else
            bulb = "0x" & bulb.ToString.PadLeft(4, "0")
        End If

    Catch ex As Exception

    End Try

    Return bulb
End Function

2 个答案:

答案 0 :(得分:1)

没有“与&符号和H”的格式。这就是VB如何表示十六进制文字。要说你想要“带有&符号和H的格式”中的那些数字就像是说你想要一个带有双引号格式的String。如果您想将整数(ByteShortIntegerLong)转换为十六进制格式的String而不是十进制格式,那么您只需将使用“x”或“X”说明符,例如

Dim text = number.ToString("X")

我可能想到你想要添加'& H'前缀的唯一原因是你生成VB代码。如果这就是你正在做的事情,那么你就可以用与其他任何地方完全相同的方式连接两个Strings。除此之外,如果你想要正确识别一个十六进制数字,那么你应该在它前面添加'0x',这就是在基于C语言(C ++,Java,C#等)中完成它的方式,因为它是如何在数学中完成的。

答案 1 :(得分:0)

我相信这可能就足够了。

& H是在某些语言中指定数字为十六进制的一种方法,例如Visual BASIC; H不是数字本身的一部分。

我真的怀疑你需要这部分,但是:

应该有许多内置的方法来转换您正在使用的语言中的数字格式。如果没有,您可以自己转换它:

假设最重要的数字是第一个,最低有效数字是最后一个(big-endian),我相信在Visual BASIC中是真的:

  1. 设置初始值result = 0power = 1
  2. 获取最后一个十六进制数字,将A转换为F(或a到f)为10到15。
  3. 将当前数字乘以power;通过答案递增result
  4. power乘以16。
  5. 从头到尾获取下一个数字。
  6. 从3开始重复,直到没有更多数字。