샘플 입력/출력

샘플 입력/출력

/dev/dsp이는 및 와 상호 작용하는 맥락입니다 pacat.

이상적으로는 인코딩 메커니즘(빅엔디안 대 리틀엔디안, char/short/long)을 지정할 수 있기를 바랍니다.

보너스로 어떤 형태의 이진 구조 패키징이 좋을 수도 있습니다.

나는 기본적으로 다음과 같은 것을 생각하고있었습니다.numpy 데이터 유형하지만 껍질에.

샘플 입력/출력

> seq 11 | bincat --big -n 1 | hd
01 02 03 04 05 06 07 08
09 0A 0B 

답변1

프로그래밍 언어는 이 작업을 쉽게 수행해야 합니다. 입력 숫자 목록에서 64비트 정수(빅 또는 리틀 엔디안)와 기본 32, 16 및 8비트를 묶는 방법이 있습니다.

$ cat input
-1
2
$ < input perl -pe '$_=pack "q>",$_' | xxd
00000000: ffff ffff ffff ffff 0000 0000 0000 0002  ................
$ < input perl -pe '$_=pack "q<",$_' | xxd
00000000: ffff ffff ffff ffff 0200 0000 0000 0000  ................
$ < input perl -pe '$_=pack "l",$_' | xxd
00000000: ffff ffff 0200 0000                      ........
$ < input perl -pe '$_=pack "s",$_' | xxd
00000000: ffff 0200                                ....
$ < input perl -pe '$_=pack "c",$_' | xxd
00000000: ff02                                     ..
$ 

다른 접근 방식을 사용하려면 바이너리가 어떻게 작성되는지 알아야 합니다. 그렇지 않으면 숫자가 완전히 틀릴 수 있습니다.

$ jot 255 | perl -pe '$_=pack "l>",$_' > 32big
$ < 32big perl -nE 'say for unpack "l*",$_' | head -3
16777216
33554432
50331648
$ < 32big perl -nE 'say for unpack "l>*",$_' | head -3
1
2
3
$ 

관련 정보