【问题标题】:Add Hex Chars directly to a string in PowerShell将十六进制字符直接添加到 PowerShell 中的字符串
【发布时间】:2018-11-19 22:45:35
【问题描述】:

我想做这样的事情(我尝试了四种不同的方法)。创建一个包含十六进制字符的字符串值:

$searchString = "filterValue\xEF\xBF\xBD"
#$searchString = "filterValue" + 0xEF -as [char] + 0xBF -as [char] + 0xBD -as [char]
#$searchString = "filterValue" + 0xEF + 0xBF + 0xBD
$searchString = "filterValue\0xEF\0xBF\0xBD"
Write-Host "$searchString len=$($searchString.Length)"

长度应为 14。

是否有人将它们内联添加而不是创建三个单独的 char 值,如本文所示:Writing a hex escaped char in Powershell

我尝试了更长的路:

$char1 = (0xEF -as [char])
$char2 = (0xBF -as [char])
$char3 = (0xBD -as [char])
$searchString = "filterValue" + $char1 + $char2 + $char3
Write-Host "$searchString len=$($searchString.Length)"
$posSearchString = $filterBytes.IndexOf("$searchString")

但这似乎与我正在寻找的不匹配:

【问题讨论】:

    标签: hex powershell-3.0


    【解决方案1】:

    使用子表达式:

    $searchString = "filterValue$([char]0xEF)$([char]0xBF)$([char]0xBD)"
    

    只要您转换值,字符串连接或使用格式运算符也可以工作:

    $searchString = "filterValue" + [char]0xEF + [char]0xBF + [char]0xBD
    $searchString = "filterValue{0}{1}{2}" -f [char]0xEF, [char]0xBF, [char]0xBD
    

    如果您想使用 -as 运算符而不是将数字转换为字符,则需要对表达式进行分组:

    $searchString = "filterValue" + (0xEF -as [char]) + (0xBF -as [char]) + (0xBD -as [char])
    $searchString = "filterValue{0}{1}{2}" -f (0xEF -as [char]), (0xBF -as [char]), (0xBD -as [char])
    

    【讨论】:

      猜你喜欢
      • 2010-10-04
      • 2014-03-07
      • 1970-01-01
      • 2020-11-07
      • 2019-07-27
      • 1970-01-01
      • 2016-02-26
      • 1970-01-01
      相关资源
      最近更新 更多