Преобразовать байт [] в BitArray [дубликат]

Самый простой способ - Build | Публиковать. Просто отключите любые действия в Интернете, если вы этого не хотите. Вы можете сделать это в Project -> Settings -> Publish. Проверьте, например, настройки «Обновления».

39
задан Jon Clements 13 October 2012 в 12:26
поделиться

2 ответа

Этот подход к использованию new-object должен работать:

$cert = new-object System.Security.Cryptography.X509Certificates.X509Certificate `
      -ArgumentList @(,$bytes)

Фокус в том, что PowerShell ожидает массив аргументов конструктора. Когда есть только один аргумент, и это массив, он может запутать алгоритм разрешения перегрузки PowerShell. Вышеприведенный код помогает, поместив массив байтов в массив только с одним элементом.

54
ответ дан x0n 22 August 2018 в 08:19
поделиться

Удивительно для меня, я пробовал это, и кажется, что он работает:

[byte[]] $certPublicBytes = something
$cert = [System.Security.Cryptography.X509Certificates.X509Certificate] $certPublicBytes
return $cert

Я еще не знаю, по какой магии он работает, поэтому ваши объяснительные комментарии оценены. :)

(Примечание: после того, как я нашел, что использование квадратного скобки-типа-типа, как я делал выше, может также привести к другим ошибкам, таким как «Невозможно преобразовать значение» System.Byte [] »в введите «System.Security.Cryptography.X509Certificates.X509Certificate». Ошибка: «Не удается найти запрошенный объект». Явный подход New-Object, рекомендованный Кейтом, кажется лучше!) [/ ​​g2]

8
ответ дан Tim Lovell-Smith 22 August 2018 в 08:19
поделиться
  • 1
    Сильно напечатав массив как [byte []] вместо нетипизированного (что фактически является [object []]), вы удаляете всю двусмысленность при выборе правильного конструктора. PowerShell будет искать конструктор при выполнении приведения, если не имеется явного или явного приведения. – x0n 14 October 2012 в 00:43
  • 2
    В моем случае я сделал сильную печать, но ничего ... – Andry 21 May 2013 в 10:11
  • 3
    То же, явное добавление типов ничего не делает. Проверяя выражение, содержащее байты, он уже имеет тип байта [], а не объект []. Использование предложения Keith Hills отлично работает. – Svend 4 September 2017 в 11:46
Другие вопросы по тегам:

Похожие вопросы: