我正在閱讀一個id3標籤,其中每個幀的大小以3個字節指定。我怎樣才能將這個值用作int?你如何讀取一個3字節大小的值作爲一個整數在c + +?
回答
閱讀每個字節,然後把它們一起放入您的int
:
int id3 = byte0 + (byte1 << 8) + (byte2 << 16);
確保採取字節順序考慮。
'+'或'|'? [..] – Muggen 2012-03-27 19:51:19
沒關係,在這種情況下它們是一樣的。 – 2012-03-27 19:51:32
非常好,謝謝 – carboncomputed 2012-03-27 19:55:20
讀取的字節中的個別,並把它們放到正確的位置在一個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;
編輯:看來,ID3使用網絡(大尾數)字節順序 - 改變代碼相匹配。
這個假設'char'是unsigned ...(另外,'fgetc'返回一個'int'!) – 2012-03-27 19:49:00
@OliCharlesworth:fgetc返回一個int值,但唯一可以是負值的值(如int)就是EOF(我忽略此時此刻)。 – 2012-03-27 19:52:23
C++的人可能討厭它使用'fgetc()',但我與傑裏。 – 2012-03-27 19:52:57
- 1. Python:如何從一個4字節的字節數組中獲取一個4字節大小的整數?
- 2. 如何在一個大整數中有效地找到一個字節的值
- 3. 如何讀取一個字節並在C++中保存整數字節的ASCII值
- 4. 如何從一個字節讀取整數[]
- 5. C++如何讀取字節爲整數字節序獨立?
- 6. 從大文件讀取一個字節
- 7. 如何讀取字節數組中的前3個字節
- 8. 如何讀取一個字節的數值?
- 9. 讀取多個字節爲一個值在TensorFlow
- 10. 從一個插槽讀取1個字節與讀取大塊
- 11. 如何讀取一個字符串後跟一個整數..?
- 12. Java的串聯整數值作爲一個字節
- 13. 如何確定3個整數的最大值和最小值
- 14. 讀取下一個字節的位數
- 15. 將3個字節陣列合併爲一個單一的c#
- 16. 獲取大小在給定一個整數的任意整數
- 17. 在c中每次讀取一個文件的字節數
- 18. 爲什麼read()一次讀取一個字節,如果char是2個字節?
- 19. 你如何獲得一個字段的整數值?
- 20. C#一次讀取文件作爲十六進制的一個字節
- 21. 作爲一個無符號字節讀單個字節
- 22. 從一個字節讀取EXIF數據[]
- 23. 從char *數組中讀取「整數」大小的字節。
- 24. 爲什麼你要指定一個整數作爲C簽名?
- 25. 在Python中打包一個整數到3個字節
- 26. 如何在swift 3中從base64獲取一個字節數組?
- 27. 如何在Java中讀取一個整數的整數?
- 28. 如何在Python中將整數視爲一個字節數組?
- 29. 調整JButton的大小,並把它作爲一個小按鈕在一個JFrame
- 30. 將多個字符串作爲一個字符串讀取? C++
什麼意思是「閱讀」?從記憶裏?從一個文件? – 2012-03-27 19:47:17
在C中,你可以利用稱爲位域的東西,類型爲int,佔用3個字節= 3 * 8 = 24位。在C中,這由'int int_3byte:24'(在一個結構體內)表示。我想C++有一個等同的機制。 – phimuemue 2012-03-27 19:49:18
請不要使用位域。 – 2012-03-27 19:49:59