๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Lang/๐Ÿ Python

๐Ÿ Python * PCM(raw data) ๋น…/๋ฆฌํ‹€ ์—”๋””์•ˆ ๋ณ€ํ™˜ํ•˜๊ธฐ

" PCM(raw binary) ๋ฐ์ดํ„ฐ์˜ ์ €์žฅ ๋ฐฉ์‹์„ ๋ณ€๊ฒฝํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค! "

 

์กฐ๊ธˆ ๋” ์ƒ์„ธํžˆ ๋งํ•˜์ž๋ฉด,

Big endian ํ˜•์‹์œผ๋กœ ์ €์žฅ๋œ PCM ๋ฐ์ดํ„ฐ๋ฅผ Little endian ์ €์žฅ ํ˜•์‹์œผ๋กœ ๋ฐ”๊พธ๊ณ  ์‹ถ์—ˆ๋‹ค.

 

๋Œ€๋ถ€๋ถ„ ๊ธฐ๋ณธ์ ์œผ๋กœ( ์•„๋‹์ˆ˜๋„ ์žˆ์Œ ๐Ÿคฃ ) Little endian ํ˜•์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋“ค์„ ์ €์žฅํ•˜๋Š”๋ฐ,

์ผ๋ณธํšŒ์‚ฌ์—์„œ ์ œ๊ณตํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ–ˆ๋”๋‹ˆ ๊ธฐ๋ณธ ํ˜•์‹์ด Big endian์ด์—ฌ์•ผ ํ•œ๋‹จ๋‹ค... ๐Ÿ˜ฑ

 

์ธํ„ฐ๋„ท ๊ฒ€์ƒ‰์„ ํ–ˆ์„ ๋•Œ Int ํ˜• ๋ฐ์ดํ„ฐ๋ฅผ Binery ํ˜•์œผ๋กœ ๋ฐ”๊พธ๋ฉด์„œ Big ๋˜๋Š” Little endian ํ˜•์‹์„ ์„ ํƒํ•˜๋Š” ์˜ˆ์‹œ๋Š” ๋งŽ์ด ๋‚˜์™”์œผ๋‚˜,

๋‚ด ๊ฒ€์ƒ‰ ์‹ค๋ ฅ์ด ๋ถ€์กฑํ•œ ํƒ“์ธ์ง€ Raw data๋ฅผ ์ฝ์–ด์™€ ์ด๋ฅผ ๋ฐ”๊พธ๋Š” ์˜ˆ์‹œ๋Š” ์ฐพ์ง€ ๋ชปํ–ˆ๋‹ค. ํ˜น์‹œ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ• ์•„์‹œ๋ฉด ์ฝ”๋ฉ˜๋“œ ๋‚จ๊ฒจ์ฃผ์„ธ์š” ๐Ÿง

 

ํ•ด์„œ ํšŒ์‚ฌ ์ƒ์‚ฌ๋ถ„๊ป˜์„œ C์–ธ์–ด๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•ด์„œ ์ฃผ์…จ์ง€๋งŒ..

Python์— StringIO ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•˜๋‹ค๋ณด๋‹ˆ ๊ฒฐ๊ตญ ๋งŒ๋“ค๊ฒŒ ๋˜์—ˆ๋‹ค.

 

 

 


 

๋ณ€ํ™˜ํ•˜๊ธฐ ์ „์—, ์•Œ์•„๋ณด๋Š” ๋ณ€ํ™˜ ๋ฐฉ๋ฒ•!

์‚ฌ์‹ค ์„ค๋ช…์„ ๋“ค์—ˆ๋Š”๋ฐ๋„ ์•„์ง ์ •ํ™•ํ•˜๊ฒŒ '์ด๊ฑฐ์•ผ!'๋ผ๋Š” ๋Š๋‚Œ์€ ๋“ค์ง€ ์•Š๋Š”๋‹ค... ์•„๋งˆ ๋‚ด๊ฐ€ ๋˜ฅ๋ฉ์ด๋ผ ๊ทธ๋ ‡๊ฒ ์ง€..๐Ÿคฃ

๊ทธ๋ž˜๋„ ๊ฐ„๋‹จํžˆ ๋“ค์€ ์„ค๋ช…์„ ์ •๋ฆฌํ•ด๋ณด์ž.

 

์•„๋ž˜๋Š” ๊ฐ™์€ PCM ๋ฐ์ดํ„ฐ๋ฅผ Big/Little endian ๋ฐฉ์‹์œผ๋กœ ์ €์žฅํ•œ ํŒŒ์ผ์„ vi๋กœ Binary ๋ฐ์ดํ„ฐ๋ฅผ Hex ํ˜•์‹์œผ๋กœ ์˜คํ”ˆํ•œ ๋ชจ์Šต์ด๋ฉฐ,

์™ผ์ชฝ์€ Little endian ์˜ค๋ฅธ์ชฝ์€ Big endian ๋ฐฉ์‹์ด๋‹ค.

 

 

ํŠน์ • ์ฐจ์ด์ ์„ ๊ฐ€์ง€๊ณ  ์ €์žฅ์ด ๋˜์–ด ์žˆ๋Š”๋ฐ, ๋ˆˆ์น˜ ์ฑ„์‹  ๋ถ„ ๐Ÿ‘€!?

์ •๋‹ต์€ ๋ฐ”๋กœ 2๊ธ€์ž(? ๋ญ๋ผ๊ณ  ์„ค๋ช… ํ•ด์•ผ ํ•  ์ง€ ใ… ..) ๋ฌถ์Œ์œผ๋กœ ์•ž ๋’ค๊ฐ€ ๋ฐ”๋€Œ์–ด์„œ ์ €์žฅ๋˜๋Š” ๊ฒƒ์ด ๋ฐ˜๋ณต๋œ๋‹ค!

 

์‚ฌ์‹ค ์ฒ˜์Œ ์„ค๋ช…๋งŒ ๋“ค์—ˆ์„ ๋•Œ๋Š” ์ €์žฅ ์ˆœ์„œ๊ฐ€ ๋ฐ”๋€๋‹ค๋Š”๊ฑด ์•Œ๊ฒ ๋Š”๋ฐ ๊ทธ๋Ÿผ ํŒŒ์ผ ์ „์ฒด์ ์œผ๋กœ ์ˆซ์ž๊ฐ€ ๋ฐ”๋€Œ์–ด ์ค˜์•ผํ•˜๋Š”๊ฒŒ ์•„๋‹Œ๊ฐ€?

๋งจ ๋’ท ๋ฐ์ดํ„ฐ๊ฐ€ ์•ž์—์˜ค๊ณ  ๋ง‰...  ์ด๋Ÿฐ ์ƒ๊ฐ์„ ํ–ˆ์—ˆ๋Š”๋ฐ ์•„๋‹ˆ์˜€๋‹ค. ์ € ๋‘ ์ž๋ฆฟ์ˆ˜๋งŒ ๋ฐ”๊พธ์–ด์ฃผ๋ฉด ๋˜๋Š” ๊ฑฐ ์˜€๋‹ค.

 

... ๋˜‘๋˜‘ํ•˜์‹  ๋ถ„๋“ค ์ œ๋ฐœ ์ฝ”๋ฉ˜๋“œ๋กœ ๋ณด์ถฉ์„ค๋ช… ๋ถ€ํƒ๋“œ๋ ค์š”.

 

 

 

๊ทธ๋ž˜์„œ ๋ณ€ํ™˜ํ•ด ๋ณด์ž

ํŠน๋ณ„ํ•œ ๊ฒƒ ์—†๊ณ  Binary ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์™€์„œ ์ € ๋‘์ž๋ฆฟ ์ˆ˜๋ฅผ ๋ฐ”๊ฟ” ์ค„ ๊ฒƒ์ด๋‹ค.

 

์ฝ์„ ๋•Œ๋„ ์ฝ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์‹œ ์“ธ ๋•Œ๋„ Binary data๋ฅผ ๊ฐ€์ง€๊ณ  ๋†€์•„์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์“ฐ๋‹ˆ๋Š” Python์— ์žˆ๋Š” StringIO ๋ชจ๋“ˆ์„ ์ถ”๊ฐ€๋กœ ์‚ฌ์šฉํ–ˆ๋‹ค.

๋ญ.. ์›๋ž˜ ๊ทธ๊ฒŒ ์ฃผ ๋ชฉ์ ์ด๊ธฐ๋„ ํ–ˆ๊ณ .. ์ „์ฒด ์ฝ”๋“œ๋Š” Github์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.