-1

FLVファイルからタグを読み取る必要があり、データ長を識別する3つの文字があります。それらをchardataLength[3]に読みましたが、次に何をすべきかわかりません。これはASCIIではなくバイナリであるため、整数123atoi()に変換するために使用するほど単純ではありませんchar xxx[] = "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に変換するにはどうすればよいですか?

4

3 に答える 3

4
int length = ((unsigned int)xxx[0]) << 16 + ((unsigned int)xxx[1]) << 8 + ((unsigned int)xxx[2]);

http://osflash.org/flvによるビッグエンディアン。

于 2012-07-25T03:16:12.120 に答える
1

int(char - '0')char を対応する 10 進整数に変換するために使用できます。たとえば、int('3' - '0')= 3 です。C++ では、次のように文字列ストリームを使用することもできます。

stringstream ss;
ss << char;
int n;
ss >> n;
于 2012-07-25T02:51:27.680 に答える
0

あなたはこれを行うことができます:

int a = (dataLength[0]-'0')*100+(dataLength[1]-'0')*10+(dataLength[2]-'0');

この文字配列にさらにアイテムがある場合。while ループを使用できます。

于 2012-07-25T03:24:10.877 に答える