整数转数组说明
Explanation on Integer to Array
请帮忙
我知道您正在阅读本文,如果没有答案,我将不胜感激,因为我觉得只有我一个人在努力解决这个问题。
这是如何工作的?
我已经看完了this document。它提到了一个名为 TimestampScale 的元素。我已经下载了大约三十个 WebM 示例文件并看到 HEX { 0x2AD7B1
或 2A
D7
B1
或 ['2A','D7','B1']
} 或 非十六进制整数 { 42
215
177
或 [42, 215, 177]
} 总是相同的:HEX { 0x830F4240
或 83
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的大端编码)
请帮忙
我知道您正在阅读本文,如果没有答案,我将不胜感激,因为我觉得只有我一个人在努力解决这个问题。
这是如何工作的?
我已经看完了this document。它提到了一个名为 TimestampScale 的元素。我已经下载了大约三十个 WebM 示例文件并看到 HEX { 0x2AD7B1
或 2A
D7
B1
或 ['2A','D7','B1']
} 或 非十六进制整数 { 42
215
177
或 [42, 215, 177]
} 总是相同的:HEX { 0x830F4240
或 83
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的大端编码)