2017-02-15 8 views
1

리눅스 bash 쉘에서, 나는 내가 그것을 ŒÕžõ<šªh1sv~ uç진수 덤프 - 해당 -r을 xxd

과 같은 텍스트 뷰어에서 파일을 열 때 일반 진수 바이너리

$ echo "8cd59ef53c9aaa68311b73767e0975e7" | xxd -r -p > xxd_out.bin 

로 덤프 변환하려면 다음을 사용

또는 xxd에서

$ xxd -b xxd_out.bin 
00000000: 10001100 11010101 10011110 11110101 00111100 10011010 ....<. 
00000006: 10101010 01101000 00110001 00011011 01110011 01110110 .h1.sv 
0000000c: 01111110 00001001 01110101 11100111     ~.u. 

또는 메모장 ++ 진수 - 편집기 (플러그인)보기에서

enter image description here

Ruby에서 동일한 이진 출력을 얻으려면 어떻게해야합니까? xxd -r -p은 어떤 라이브러리를 사용할 수 있습니까?

답변

3

사용 Array#pack

.scan(/../)로 포장됩니다 [0x8c, 0xd5, 0x9e]

.pack("c*")로 변환됩니다 ["8c","d5","9e"]

.map(&:hex)"8cd59e"을 분할합니다 "\x8c\xd5\x9e"

echo "8cd59ef53c9aaa68311b73767e0975e7" | \ 
    ruby -ne 'print $_.scan(/../).map(&:hex).pack("c*")' | \ 
    xxd -b 

출력 :

00000000: 10001100 11010101 10011110 11110101 00111100 10011010 ....<. 
00000006: 10101010 01101000 00110001 00011011 01110011 01110110 .h1.sv 
0000000c: 01111110 00001001 01110101 11100111     ~.u. 
+0

또는 [my_hex_string] .pack ('H *') – peter