【问题标题】:Visual Basic Print Hex to text fileVisual Basic 将十六进制打印到文本文件
【发布时间】:2015-10-18 04:47:17
【问题描述】:

我正在使用 VB-2013。我需要将一个十六进制字符串发送到一个文本文件。不幸的是,由于另一个程序需要从文本文件中读取此十六进制,因此我无法将其作为原始十六进制发送。我还需要操纵一些值来创建校验和。截至目前,当我将它们写入文本文件时,它们显示为十进制。我想知道如何将我的十六进制字符串转换为等效的 ASCII?

这是主要应用程序

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles    Button1.Click
    fileN = TextBox1.Text
    path = ("**************" + fileN + ".txt")

    Dim fs As New FileStream(path, FileMode.Create, FileAccess.Write)
    Dim sw As New StreamWriter(fs)
        sw.WriteLine(intV(holder, TextBox2.Text))

    sw.Flush()
    fs.Close()
End Sub

这是我写的函数

  Public Function intV(ByVal arr() As String, r As String)
    i = 0
    textH = Convert.ToInt16(r)
    arr(0) = &H8E
    arr(1) = &H71
    arr(2) = &H7
    arr(3) = &H98
    arr(4) = &HD
    arr(5) = textH
    Do Until arr.Length - 1
        sB = sB + arr(i)
        i = i + 1
    Loop
    arr(6) = sB
    i = 0
    hold = Join(arr, " ")
    Return hold
End Function

编辑

在textbox2中输出值为60的文本文件

142 113 7 152 13 60 0

【问题讨论】:

  • 我的道歉标签已被删除,希望我当前的标签更适合。
  • String.Format for Hex 的可能重复项
  • 很难猜出这段代码试图做什么,它的独特之处在于每一行代码都会产生一个错误。将Option Strict On 放在文件顶部,然后再试一次。
  • 只是想了解您究竟想在这里做什么。因此,您 NOT 正在寻找一个带有“8E 71 07 98 0D 60 0”的 string 输出到您的文件?如果没有,您是否正在寻找BinaryWriter.Write()

标签: vb.net


【解决方案1】:
hold = String.Join(" ", (From i In arr Select String.Format("{0:X}", i)).ToArray)

【讨论】:

  • 感谢您的及时回复,但遗憾的是仍然返回十进制值。
  • 然后编辑您的问题以显示您得到的输出。
  • arr 是一个字符串数组,但它需要是一个整数数组才能工作。
  • @Mark:我明白了,既然你指出了这一点。我假设因为他们将 int 插入其中,所以它必须是一个 int 数组。骗我。
  • @Hans:将 arr 更改为 int 数组。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-14
相关资源
最近更新 更多