-1

我必须从 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?

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 转换为相应的十进制整数。例如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');

如果这个 char 数组有更多项目。你可以使用while循环;

于 2012-07-25T03:24:10.877 回答