ByteArrays를 비트 단위로 변환 한 다음 다시 가져 오는 데 문제가 있습니다. 결국 나는 그때 진수로 된 ByteArray에서 이동하기 위해 노력하고있어하지만 난에두고있어보다 내가 다시 다른 값을 얻는 데Powershell 바이트 - 비트 배열
를 이것은 BitArray 설정이다.
$list = @(1,7,10,11,13,14,15,16,17,18,19,20,21,22,23,29,30,32,33,37,39,41,42,43,44,46,48,49,54,56,60,69,72,74,77,79,88,98,100,102,104,109,114,116,118,119,120,127,128,129,133,135,143,147)
$BitArray = New-Object BitArray(152)
$list | % {$BitArray[$_ - 1] = $true}
참고 : 나는
$result = New-Object System.Byte[] (19)
$BitArray.CopyTo($result, 0)
: '일부 사용자 지정 형 가속기 내가 찾은 제가 바이트로 변환하기 위해 사용했습니다 바탕으로
if ($(try{[accelerators]}catch{"nope"}) -eq "nope"){
$xlr=[psobject].Assembly.GetType('System.Management.Automation.TypeAccelerators')
$xlr::Add('accelerators',([psobject].Assembly.GetType('System.Management.Automation.TypeAccelerators')))
}
@{
"datatable"="System.ComponentModel.MarshalByValueComponent"
"marshal"="System.Runtime.InteropServices.Marshal"
"BitArray"="System.Collections.BitArray"
}.GetEnumerator() | %{
$AcceleratorName=$_.name
$AcceleratorValue=$_.value
if (-not ((([accelerators]::get).keys | ? {$_ -eq "$AcceleratorName"} | Measure-Object).count)){
[accelerators]::add("$AcceleratorName","$AcceleratorValue")
}
}
을 사용하고 있습니다3210
하지만 둘 다 문자열로 바꾸면 일치하지 않습니다. 문자열 코드
입력 :
$array = @()
0..151 | % {if ($BitArray[$_]) {$array += 1} else {$array += 0}}
$InputAsArray = @()
0..18 | % {
$InputAsArray += ($array -join "").Substring(($_ * 8),8)
}
출력 문자열 코드 :
($result | % { [Convert]::ToString($_, 2).PadRight(8,'0')})
입력 패턴 :
10000010
01101111
11111110
00001101
10001010
11110101
10000101
00010000
00001001
01001010
00000001
00000000
01010101
00001000
01010111
00000011
10001010
00000010
00100000
출력 패턴 :
10000010
11110110
11111110
10110000
10100010
10101111
10100001
10000000
10010000
10100100
10000000
00000000
10101010
10000000
11101010
11000000
10100010
10000000
10000000
을'[변환] :: ToString ($ _, 2)'->'$ ($의 캘리포니아 = [변환] :: – PetSerAl
Bytes to bits :'$ bytes = [byte []] @ (ToString ($ _, 2) .ToCharArray(); 0,1,2,3,4,5); $ bits = [Collections.BitArray] $ bytes'. 바이트에 대한 비트 :'$ bytes = [byte []] :: new ([$ Math] :: floor (($ bits.length-1)/8) +1); $ bits.copyTo ($ bytes, 0)'. 귀하의 질문에 많은 코드가있어서 'ByteArrays를 비트로 변환 한 다음 다시 가져 오는'이라는 원래의 목표에 연결하지 못했습니다. – wOxxOm
@PetSerAl 반대로 작동하지 않습니다. 패딩이 생략됩니다. – Chirishman