簡體   English   中英

如何在C / C ++中將char [3]從FLV結構轉換為int

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM