Tôi đang đọc trong thẻ id3 có kích thước của mỗi khung được chỉ định bằng 3 byte. Làm thế nào tôi có thể sử dụng giá trị này như một int?Làm thế nào để bạn đọc trong một giá trị kích thước 3 byte như một số nguyên trong c + +?
Trả lời
Đọc mỗi byte và sau đó đặt chúng lại với nhau thành int
của bạn:
int id3 = byte0 + (byte1 << 8) + (byte2 << 16);
Hãy chắc chắn để có endianness vào tài khoản.
'+' hoặc '|'? [..] – Muggen
Không quan trọng, chúng giống nhau trong trường hợp này. –
Tuyệt vời, Cảm ơn bạn – carboncomputed
Đọc byte trong cá nhân, và đặt chúng vào những nơi đúng trong một int:
int value = 0;
unsigned char byte1 = fgetc(ID3file);
unsigned char byte2 = fgetc(ID3file);
unsigned char byte3 = fgetc(ID3file);
value = (byte1 << 16) | (byte2 << 8) | byte3;
Edit: có vẻ như ID3 sử dụng mạng (lớn-endian) thứ tự byte - thay đổi mã để phù hợp.
Giả định rằng' char' là unsigned ... (Ngoài ra, 'fgetc' trả về' int'!) –
@OliCharlesworth: fgetc trả về một int, nhưng các giá trị duy nhất có thể âm (như int) là những thứ như EOF (mà tôi bỏ qua khoảnh khắc). –
Người C++ có thể ghét nó vì sử dụng 'fgetc()', nhưng tôi có Jerry. –
- 1. Cách đọc một byte và lưu giá trị ASCII của byte theo số nguyên trong C++
- 2. Đọc byte kích thước "số nguyên" từ mảng char *.
- 3. Làm thế nào để bạn đọc một mảng byte từ một DataRow trong C#?
- 4. Đọc 3 byte dưới dạng số nguyên
- 5. Đọc hai byte thành một số nguyên?
- 6. C#, bits & bytes - Làm thế nào để lấy các giá trị bit từ một byte?
- 7. Byte thành số nguyên trong C#
- 8. 2 byte đại diện cho 3 số nguyên trong C
- 9. Làm thế nào để tạo một mảng byte trong C++?
- 10. Làm thế nào để đọc số nguyên trong Erlang?
- 11. Scala, làm thế nào để đọc nhiều hơn một số nguyên trong một dòng và nhận chúng trong một biến?
- 12. Làm thế nào để bạn kích thước trước một mảng trong Lua?
- 13. Làm thế nào để bạn vượt qua một hàm như một tham số trong C?
- 14. Làm thế nào để kiểm tra, nếu một giá trị là một số nguyên với plpgsql?
- 15. Trong SQL làm thế nào để có được giá trị tối đa cho một số nguyên?
- 16. Làm thế nào để đúc một số vào một byte?
- 17. Làm thế nào để kích thước UIWebView trong một UIModalPresentationFormSheet?
- 18. Tạo một mảng byte với kích thước động trong F #
- 19. Làm thế nào để đọc số nguyên một cách tao nhã bằng luồng C++?
- 20. Toán tử C++ sizeof tính kích thước như thế nào?
- 21. Làm thế nào để nhận được các giá trị byte của một chuỗi trong PHP?
- 22. Đọc một mảng C# byte trong Java
- 23. Bạn sẽ thay đổi một byte đơn trong một tệp như thế nào?
- 24. Làm thế nào bạn có thể So sánh một mảng byte trong C#?
- 25. giá trị số nguyên Nullable từ đọc
- 26. Character Array như một giá trị trong C++ đồ
- 27. Làm thế nào để khai báo một mảng 2D có kích thước thay đổi trong C?
- 28. Làm thế nào để bạn trích xuất một giá trị số từ một chuỗi trong một truy vấn MySQL?
- 29. làm thế nào để loại Số nguyên trong một listview
- 30. Kích thước của một byte trong bộ nhớ - Java
"đọc" nghĩa là gì? Từ ký ức? Từ một tập tin? –
Trong C bạn có thể sử dụng một cái gì đó gọi là một lĩnh vực bit gõ như int chiếm 3 byte = 3 * 8 = 24 bit. Trong C, điều này được biểu thị bằng 'int int_3byte: 24' (bên trong một cấu trúc). Tôi cho rằng C++ có một cơ chế tương đương cho việc này. – phimuemue
Vui lòng không sử dụng bitfield. –