Powershell: как инициализировать массив байтов, как в C?

В C вы можете сделать что-то вроде:

uint16_t datalen = 1024;
uint16_t crc = 0x1021;
uint8_t myHeader = {0x41, 0xBE, 0x21, 0x08, datlen/256, datalen%256, crc/256, crc%256};

Теперь, как я могу выполнить подобную инициализацию массива в Powershell?

Я хочу отправить массив байтов позже на последовательный порт.


person stev    schedule 18.04.2020    source источник


Ответы (1)


Не так уж отличается:

[uint16]$datalen = 1024
[uint16]$crc = 0x1021
[byte[]]$myHeader = 0x41, 0xBE, 0x21, 0x08, ($datalen/256), ($datalen%256), ($crc/256), ($crc%256)
person Theo    schedule 18.04.2020
comment
Спасибо, это работает. Я пропустил приведение переменной к [uint16] перед массивом байтов. - person stev; 18.04.2020
comment
Хм, мне было рано считать это хорошим, проблема с делением, оно выполняется путем округления результата, что нежелательно. Как этого избежать? - person stev; 18.04.2020
comment
Думаю, мне нужно использовать [Math]::Floor(), верно? Это немного больно, потому что снижает читабельность, но, по крайней мере, это работает. - person stev; 18.04.2020
comment