【问题标题】:swapping between hex digits in VB.NET在 VB.NET 中的十六进制数字之间交换
【发布时间】:2014-07-21 13:27:48
【问题描述】:

我有一些字符串数据需要像这样交换:

我的字符串数据例如:056446A750513300 我需要形成的是:00335150A7466405

我认为你们注意到了这种模式(每两个最低有效数字移动为最高有效数字,依此类推)

我需要能够在 VB.NET 中快速实现这种交换的算法或代码。 我还有一个问题>>在这种情况下,我的字符串数据是否也可以作为十六进制数据而不进行任何转换?

提前致谢。

【问题讨论】:

  • 您可以通过交换数字而是以相反的顺序读取它们来加快速度,一次两个半字节。当然,首先不要让它们以错误的顺序排列。如果您不显示字符串的使用方式,您将无法获得准确的“快速”建议。
  • 请说明您的尝试以及您遇到问题的地方。

标签: vb.net string hex swap


【解决方案1】:

使用StringBuilder

Imports System.Text
Dim input = "056446A750513300"
Dim sb As New StringBuilder
For i As Integer = input.Length - 1 To 0 Step -1
    sb.Append(If(i Mod 2, input(i - 1), input(i + 1)))
Next
Dim result = sb.ToString()

【讨论】:

    【解决方案2】:

    使用 StrReverse 函数....http://msdn.microsoft.com/en-us/library/e462ax87(v=vs.90).aspx

    Dim TestString As String = "056446A750513300" 
    
    Dim revString As String = StrReverse(TestString)
    
    ' revString now equals "003315057A644650".
    

    【讨论】:

    • 这需要几秒钟才能在搜索引擎中搜索......你真的应该尝试做一些工作!
    • 你测试过这个吗?此代码给出 003315057A644650 这不是 OP 想要的。与所需结果进行比较:00335150A7466405
    【解决方案3】:

    好的...现在我已经阅读了这个问题...

        Dim InitialStr as String = "056446A750513300"
        Dim OutputStr as String
    
        Dim HexValues as String()
        For x = 0 to InitialStr.length/2
            HexValue(x) = Mid(InitialStr, x*2, 2)
        Next
    
        For x = InitialStr.length/2 to 0 step -1
            OutputStr += Hexvalue(x)
        Next
    
        'OutputStr now equals "00335150A7466405"
    

    【讨论】:

      猜你喜欢
      • 2010-09-09
      • 1970-01-01
      • 2018-01-16
      • 2011-04-14
      • 1970-01-01
      • 1970-01-01
      • 2011-12-08
      • 1970-01-01
      • 2023-02-15
      相关资源
      最近更新 更多