Как отобразить массив байтов в PowerShell в виде объединенной строки шестнадцатеричных цифр?

Я использую WMI, чтобы узнать, что мой WWN (Всемирное имя) для моего порта на карте HBA. Я могу получить WWN обратно, но он содержится в виде массива 8 байт. Я хотел бы преобразовать этот массив байтов в строку из 16 шестнадцатеричных цифр для удобства отображения.

этот запрос я использую, чтобы распечатать каждое число в своей строке. Есть ли способ преобразовать это, чтобы объединить 8 строк в одну строку?

gwmi -namespace rootwmi -class MSFC_FibrePortNPIVAttributes | select -expand WWPN | foreach { $_.ToString("X2") }

Я думаю что следующее Можно использовать для того чтобы испытать с как раз байтовые данные, но я все еще новичок в PowerShell.

[byte[]] 1,2,3,4,5,6,7,8 | foreach { $_.ToString("X2") }
22
задан Slogmeister Extraordinaire
04.03.2023 18:43 Количество просмотров материала 2525
Распечатать страницу

2 ответа

вот несколько способов (я уверен есть и другие):

[byte[]](1,2,3,4,5,6,7,8) | foreach { $string = $string + $_.ToString("X2") }
Write-Output $string

или

-join ([byte[]](1,2,3,4,5,6,7,8) |  foreach {$_.ToString("X2") } )

или

([byte[]](1,2,3,4,5,6,7,8) |  foreach { $_.ToString("X2") }) -join ""

выход для каждого из перечисленных выше:

0102030405060708
4
отвечен Dennis Williamson 2023-03-06 02:31

один из способов сделать это так:

[System.BitConverter]::ToString([Byte[]](1,2,3,4,5,6,7,8)) -replace "-"

Вот описание:

[Byte[]](1,2,3,4,5,6,7,8)

это создает ByteArray с 8 элементами, каждый из которых содержит значения от 1 до 8 соответственно.

[System.BitConverter]::ToString(<ByteArray type Object>)

это преобразует ByteArray в тире с запятой строку, вот так:

01-02-03-04-05-06-07-08

и наконец,

-replace "-"

Это удаляет тире.

2
отвечен Dave Sexton 2023-03-06 04:48

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх