Как преобразовать десятичную в шестнадцатеричную переменную? - PullRequest
0 голосов
/ 04 февраля 2019

У меня много файлов bmp и jpg, и мне нужно извлечь имя файла без расширения, написать конкретный текст до, шестнадцатеричную переменную после и поместить его в текстовый файл с именем list.txt

Например, файлыявляются: picture1.bmp, picture2.spr, picture3.bmp

Я извлекаю текстовое имя без расширения, помещаю перед определенным текстом и после имени извлечения шестнадцатеричную переменную, поэтому это делается в list.txt:

abc picture1 0x7f020000

abc picture2 0x7f020001

abc picture3 0x7f020002

Я не знаю, как написать шестнадцатеричную строку в list.txt, потому что мой скрипт преобразует ее в base10.

Мой сценарий создает list.txt следующим образом:

abc picture1 2130837504

abc picture2 2130837505

abc picture3 2130837503

Вот код, который я использую:

$a=".field public static final "

$b=":I = "

$c= 0x7f01ffff

Get-ChildItem -Recurse -Include *.bmp,*.spr | ForEach-Object {$a+$_.BaseName+$b+(++$c)} | Out-File list.txt

1 Ответ

0 голосов
/ 04 февраля 2019

Чтобы использовать шестнадцатеричные значения, используйте стандартный числовой формат строка x.Powershell может интерпретировать шестнадцатеричное значение как целое число, поэтому вам необходимо вызвать метод 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...