PowerShell에서 기본적으로 파일에 바이트 쓰기
저는 base64 인코딩된 이미지를 반환하는 API를 테스트하기 위한 스크립트를 가지고 있습니다.저의 현재 해결책은 이것입니다.
$e = (curl.exe -H "Content-Type: multipart/form-data" -F "image=@clear.png" localhost:5000)
$decoded = [System.Convert]::FromBase64CharArray($e, 0, $e.Length)
[io.file]::WriteAllBytes('out.png', $decoded) # <--- line in question
Get-Content('out.png') | Format-Hex
이것은 가능하지만 [io]에서 소스를 만들지 않고도 PowerShell에서 기본적으로 바이트 배열을 작성할 수 있기를 원합니다.파일]
PowerShell에서 $decoded를 작성하려고 시도한 결과 모두 정수 바이트 값의 문자열로 인코딩된 목록을 작성했습니다.(예:)
42
125
230
12
34
...
어떻게 해야 제대로 하나요?
Set-Content cmdlet을 사용하면 다음을 사용하여 파일에 원시 바이트를 쓸 수 있습니다.Byte
인코딩:
$decoded = [System.Convert]::FromBase64CharArray($e, 0, $e.Length)
Set-Content out.png -Value $decoded -Encoding Byte
(그러나 BACON은 댓글에서 Set-Content가 느리다고 지적했습니다. 테스트에서는 10MB의 데이터를 쓰는 데 10초, 360MB의 RAM이 필요했습니다.따라서 애플리케이션에 비해 너무 느리다면 Set-Content를 사용하지 않는 것이 좋습니다.)
C# 어셈블리를 실행하는 것은 PowerShell이 기본이므로 이미 "기본적으로" 파일에 바이트를 쓰고 있습니다.
당신이 고집한다면, 당신은 다음과 같은 구조를 사용할 수 있습니다.set-content test.jpg -value (([char[]]$decoded) -join "")
이것은 기록된 데이터의 끝에 #13#10을 추가하는 단점이 있습니다.JPEG를 사용하면 견딜 수 있지만 이 변경으로 인해 다른 파일이 손상될 수 있습니다.따라서 의 바이트 최적화 루틴을 수행하십시오."네이티브" 접근법을 검색하는 대신 NET - 이 접근법은 이미 네이티브입니다.
Powershell Core(v6 이상)는 더 이상 사용할 수 없습니다.-Encoding byte
옵션으로 사용해야 합니다.-AsByteStream
예:
Set-Content -Path C:\temp\test.jpg -AsByteStream
언급URL : https://stackoverflow.com/questions/31855705/write-bytes-to-a-file-natively-in-powershell
'programing' 카테고리의 다른 글
저장 프로시저의 실행 계획을 표시하려면 어떻게 해야 합니까? (0) | 2023.08.11 |
---|---|
파이썬에서 CSV 데이터의 한 줄을 읽는 방법은 무엇입니까? (0) | 2023.08.11 |
종료된 도커 컨테이너를 계속하는 방법 (0) | 2023.08.11 |
두 테이블 합계 계산 방법 (0) | 2023.08.11 |
mysql_install_db 잘못된 문자 집합 및 정렬 (0) | 2023.08.11 |