整数转数组说明

Explanation on Integer to Array

请帮忙

我知道您正在阅读本文,如果没有答案,我将不胜感激,因为我觉得只有我一个人在努力解决这个问题。

这是如何工作的?

我已经看完了this document。它提到了一个名为 TimestampScale 的元素。我已经下载了大约三十个 WebM 示例文件并看到 HEX { 0x2AD7B12A D7 B1['2A','D7','B1'] } 或 非十六进制整数 { 42 215 177[42, 215, 177] } 总是相同的:HEX { 0x830F424083 0F 42 40['83', '0F', '42', '40'] } 或 NON -HEX 整数 { 131 15 66 64[131,15,66,64] }。正如 Matroska 元素规范中所述,所有值都应该是默认值 1000000。所以问题是...... 0x830F4240 怎么会变成 1000000

万一上面的内容对你来说太马虎了,或者你想要更多的解释:

The TimestampScale identifier is equal to 0x2AD7B1. This is in Hexadecimal formatting.

The ways I format it in HEX are:
    0x2AD7B1
    2A D7 B1
    ['2A','D7','B1']

The ways I format it in Integers are:
    42 215 177
    [42, 215, 177]



Its preceding values are taken from a Uint8Array: | 131, 15, 66, 64 |
after the Hexadecimal values are taken. This is NOT in Hexadecimal formatting.
The reason why is because that is the raw data and I want to be
as open with you as possible.

The ways I format it in HEX are:
    0x830F4240
    83 0F 42 40
    ['83','0F','42','40']

The ways I format it in Integers are:
    131 15 66 64
    [131,15,66,64]

So question is: how does | 131, 15, 66, 64 | or 0x830F4240 equal 1000000?

如何以十六进制和整数显示所有值:

    Hex: 2A D7 B1 83 0F 42 40
    Integers: 42 215 177 131 15 66 64

目标:

目标是弄清楚如何将值转换为 1000000,这样我就可以在 Matroska 元素规范中的其他元素上使用此转换(例如持续时间转换)。

WebM 容器格式是 Matroska 容器格式的子集。

Matroska 基于 EBML (Extensible Binary Meta Language)

EBML 文档由元素组成。

元素由元素 ID、元素数据大小和元素数据组成。

元素数据大小是一个可变大小的整数。 (元素 ID 也是可变大小整数。)

可变大小整数使用如下所示的位模式,其中前导位指示使用了多少字节,x 位存储实际值。

  • 1 字节:1xxxxxxx
  • 2 字节:01xxxxxx xxxxxxxx
  • 3 字节:001xxxxx xxxxxxxx xxxxxxxx
  • 4 字节:0001xxxx xxxxxxxx xxxxxxxx xxxxxxxx

等等

您提到的 TimestampScale 元素由

组成
  • 元素 ID 2A D7 B1
  • 元素数据大小83(一个 1 字节的可变大小整数,表示后面跟着 3 个字节的元素数据)
  • 元素数据0F 42 40(十进制1000000的大端编码)