使用 VbScript 将十六进制转换为字符串 [英] Convert Hex to String using VbScript

查看:68
本文介绍了使用 VbScript 将十六进制转换为字符串的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是一个将字符串转换为十六进制代码的脚本:

here is a script which convert string into hex code:

strString = "test"
strHex =""
For i=1 To Len(strString)
    strHex = strHex & " "  & Hex(Asc(Mid(strString,i,1)))
Next

strHex = Right(strHex,Len(strHex)-1)

WScript.Echo strHex

我想做一个将十六进制转换为字符串的反向操作,这可以使用 vbscript 吗?

I want to do a reverse action which converts hex into string, is this possible using vbscript?

推荐答案

VBScript 使用&H"将数字标记为十六进制.所以

VBScript uses "&H" to mark numbers as hexadecimals. So

>> WScript.Echo Chr("&H" & "41")
>>
A
>>

展示了原则上的策略.演示代码:

demonstrates the strategy in principle. Demo code:

Option Explicit

Function s2a(s)
  ReDim a(Len(s) - 1)
  Dim i
  For i = 0 To UBound(a)
      a(i) = Mid(s, i + 1, 1)
  Next
  s2a = a
End Function

Function s2h(s)
  Dim a : a = s2a(s)
  Dim i
  For i = 0 To UBound(a)
      a(i) = Right(00 & Hex(Asc(a(i))), 2)
  Next
  s2h = Join(a)
End Function

Function h2s(h)
  Dim a : a = Split(h)
  Dim i
  For i = 0 To UBound(a)
      a(i) = Chr("&H" & a(i))
  Next
  h2s = Join(a, "")
End Function

Dim s : s = "test"
WScript.Echo 0, s
WScript.Echo 1, s2h(s)
WScript.Echo 2, h2s(s2h(s))

输出:

0 test
1 74 65 73 74
2 test

更新wrt评论/unicode:

使用 AscW/ChrW (VB ref) 处理 UTF 16.

Use AscW/ChrW (VB ref) to deal with UTF 16.

Option Explicit

Function s2a(s)
  ReDim a(Len(s) - 1)
  Dim i
  For i = 0 To UBound(a)
      a(i) = Mid(s, i + 1, 1)
  Next
  s2a = a
End Function

Function s2h(s)
  Dim a : a = s2a(s)
  Dim i
  For i = 0 To UBound(a)
      a(i) = Right("0000" & Hex(AscW(a(i))), 4)
  Next
  s2h = Join(a)
End Function

Function h2s(h)
  Dim a : a = Split(h)
  Dim i
  For i = 0 To UBound(a)
      a(i) = ChrW("&H" & a(i))
  Next
  h2s = Join(a, "")
End Function

Dim s : s = "abcä" & ChrW("&H" & "d98a")
WScript.Echo 0, s
WScript.Echo 1, s2h(s)
WScript.Echo 2, h2s(s2h(s))

这篇关于使用 VbScript 将十六进制转换为字符串的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆