[英]How to convert the char[3] from an FLV struct to an int in c/c++
我必須從FLV文件中讀取標簽,並且有三個用於標識數據長度的字符。 我已經將它們讀入char dataLength[3]
,但是我不知道下一步該怎么做。 它是二進制而不是ASCII,所以它不像使用atoi()
將char xxx[] = "123"
轉換為整數123那樣簡單。這是標簽的C結構:
typedef struct {
int previousLength;
char identify; // 8: AUDIO, 9:VIDEO 18: SCRIPT
char dataLength[3];
char time[3];
char timeExt;
char streamID[3]; // always 0;
char unused__;
} FLVTag;
我可以從文件中讀取標簽,但是如何將dataLength
轉換為int?
int length = ((unsigned int)xxx[0]) << 16 + ((unsigned int)xxx[1]) << 8 + ((unsigned int)xxx[2]);
根據http://osflash.org/flv的 Big-endian。
您可以使用int(char - '0')
將char轉換為相應的十進制整數。 例如, int('3' - '0')
=3。在C ++中,您還可以通過以下方式使用字符串流:
stringstream ss;
ss << char;
int n;
ss >> n;
你可以這樣做:
int a = (dataLength[0]-'0')*100+(dataLength[1]-'0')*10+(dataLength[2]-'0');
如果此char數組具有更多項。 你可以使用while循環;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.