如何将十进制变量转换为十六进制变量?

时间:2019-02-04 08:03:36

标签: powershell

我有很多文件bmp和jpg,需要提取不带扩展名的文件名,在前面写一个特定的文本,在后面写一个十六进制变量,并将其放在一个名为list.txt的文本文件中。

例如,文件为:picture1.bmppicture2.sprpicture3.bmp

我提取不带扩展名的文本名称,在提取的文本之前放置一个十六进制变量,然后在提取的名称之后添加一个十六进制变量:

list.txt

我不知道如何在abc picture1 0x7f020000 abc picture2 0x7f020001 abc picture3 0x7f020002 中写入十六进制字符串,因为我的脚本将其转换为base10。

我的脚本像这样创建list.txt

list.txt

这是我正在使用的代码:

abc picture1 2130837504

abc picture2 2130837505

abc picture3 2130837503

2 个答案:

答案 0 :(得分:0)

要使用十六进制值,请使用standard numeric format字符串x。 Powershell能够将十六进制值解释为整数,因此您需要调用int的ToString()方法进行转换。

标准格式化程序不包含0x前缀,因此请通过额外的分类将其添加。

像这样

gci  | % {$a+$_.BaseName+$b+'0x'+(++$c).tostring('X')}
# Output
.field public static final bar:I = 0x7F0200D2
.field public static final foo:I = 0x7F0200D3
.field public static final zof:I = 0x7F0200D4

答案 1 :(得分:0)

如果您只想将十进制数字(或整数类型的变量)转换为十六进制字符串,则可以通过以下任何一种方法来实现:

"{0:X}" -f <number or variable>
[System.String]::Format("{0:X}",<number or variable>)
[System.Convert]::ToString(<number or variable>,16)
(<number>).ToString("X")
<variable>.ToString("X")