2010-09-11 25 views
11

Tôi hiện đang cố gắng giải mã các tệp WAV. Từ tiêu đề đến dữ liệu PCM.Tại sao một số nguyên byte được lưu trữ ngược? Điều này chỉ áp dụng cho tiêu đề?

Tôi đã tìm thấy tệp PDF (http://www.tdt.com/T2Support/technical_notes/tn0132.pdf) nêu chi tiết giải phẫu của tệp WAV và tôi đã có thể trích xuất và hiểu rõ dữ liệu tiêu đề thích hợp bằng Ghex2. Nhưng câu hỏi của tôi là:

Tại sao các số nguyên byte được lưu trữ ngược? I E. tháng mười hai 20 được lưu trữ dưới dạng 0x14000000 thay vì 0x00000014.

Các số nguyên của dữ liệu PCM cũng được lưu trữ ngược?

+2

Không có "ngược". Đó là tất cả theo quy ước. Tìm kiếm wikipedia cho Endianness. – Detmar

+2

... và một khi bạn đã rõ ràng rằng cả hai sự kết thúc lớn và nhỏ là hợp lý, hãy thử gói tâm trí của bạn xung quanh sự kết thúc hỗn hợp. Rồi khóc. – dmckee

+1

chút endian là không hợp lý mặc dù. [điều gì là hợp lý?] (Http://fusion.co.id/wp-content/uploads/2015/02/pig-little-endian-1.jpg) – MarcusJ

Trả lời

11

Các tệp WAV là ít kết thúc (ít byte quan trọng nhất) vì định dạng bắt nguồn cho hệ điều hành chạy trên các máy dựa trên bộ xử lý intel sử dụng định dạng cuối để lưu số.

Nếu bạn nghĩ về việc đó có ý nghĩa bởi vì nếu bạn muốn truyền một số nguyên dài sang số nguyên ngắn hoặc thậm chí một ký tự thì địa chỉ bắt đầu vẫn giữ nguyên như bạn chỉ xem ít byte hơn.

Do đó, để mã hóa 16 bit trở lên, định dạng nhỏ gọn cũng sẽ được sử dụng cho PCM. Điều này khá tiện dụng vì bạn có thể kéo chúng thành số nguyên. đừng quên họ sẽ được lưu trữ như là bổ sung của hai số bổ sung đã ký nếu họ là 16 bit, nhưng không phải nếu họ là 8 bit. (xem http://www-mmsp.ece.mcgill.ca/Documents/AudioFormats/WAVE/WAVE.html để biết thêm chi tiết)

+0

Thật lạ khi trang được đề cập nói rằng số nên được lưu trữ ở dạng lớn-endian (nhưng định dạng thực sự sử dụng ít-endian). – Groo

+0

Các trang được đề cập không còn bất cứ điều gì như nó đã biến mất ... (Tôi đã tìm thấy điều đó xảy ra khá thường xuyên với các trang web liên kết trang web đại học, sau một vài năm.) –

+0

Tôi không chắc chắn nếu tập tin của tôi không tuân thủ hoặc những gì, nhưng tất cả các trường số (tỷ lệ mẫu, tỷ lệ bit, vv) được lưu trữ ở cuối nhỏ, trong khi tất cả các trường từ (RIFF, WAVE, fmt, vv) được lưu trữ ở cuối lớn. – MarcusJ

3

"Ngược lại" là chủ quan. Một số máy lớn - endian, các máy khác có ít- endian. Trong các bối cảnh định hướng byte như định dạng tệp và giao thức mạng, thứ tự là tùy ý. Một số định dạng muốn chỉ định lớn hoặc nhỏ, những người khác thích linh hoạt và chấp nhận một trong hai hình thức, với một lá cờ cho biết đang được sử dụng.

Có vẻ như các tệp WAV giống như ít người dùng cuối.

Các vấn đề liên quan