十进制

FFmpeg从入门到出家(FLV文件结构解析)

我是研究僧i 提交于 2020-02-26 12:29:24
FLV(FLASH VIDEO),是一种常用的文件封装格式,目前国内外大部分视频分享网站都是采用的这种格式。其标准定义为《Adobe Flash Video File Format Specification》。RTMP协议也是基于FLV视频格式的。 FLV的文件格式在该规范中已阐述清楚,本章节不再重复描述,而是结合下面的示例具体阐述如何分析FLV文件。 图3. FLV文件结构示例1 图4. FLV文件结构示例2 FLV文件的分析工具有很多,这里给大家推荐FLV Parser这个小软件,通过它可以很容易的看到文件的组成结构。 3.1 文件结构 从整个文件上看,FLV是由Header和File Body组成,如下图所示: 图5. FLV文件总体结构 1.FLV Header - 长度为9,其结构的标准定义参见标准定义见E.2 The FLV header; FLV File Body - 由一连串的PreviousTagSize + Tag构成。previousTagSize是4个字节的数据,表示前一个tag的size。标准定义参见E.3 The FLV File Body。 以图3. FLV文件结构示例1为例分析整体结构: 1.位置0x00000000 - 0x00000008, 共9个字节,为FLV Header,其中: ◦0x00000000 - 0x00000002 :

信息学奥赛一本通(C++版)continue

不打扰是莪最后的温柔 提交于 2020-02-18 21:13:15
第一部分 C++语言 第六章 函数 第二节 递归算法 转进制 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 8729 通过数: 6204 【题目描述】 用递归算法将一个十进制数X转换成任意进制数M(M≤16)。 【输入】 一行两个数,第一个十进制数X,第二个为进制M。 【输出】 输出结果。 【输入样例】 31 16 {将十进制 31 转化为十六进制数} 【输出样例】 1F 【我的代码】 # include <iostream> using namespace std ; void f ( int , int ) ; int main ( ) { int n , m ; cin >> n >> m ; f ( n , m ) ; system ( "pause" ) ; return 0 ; } void f ( int n , int m ) { char ch [ 16 ] = { '0' , '1' , '2' , '3' , '4' , '5' , '6' , '7' , '8' , '9' , 'A' , 'B' , 'C' , 'D' , 'E' , 'F' } ; if ( n / m != 0 ) f ( n / m , m ) ; cout << ch [ n % m ] ; } 最大公约数 【题目描述】 用递归算法求两个数m和n的最大公约数。

mysql 中的 int(n)

寵の児 提交于 2020-02-17 15:23:08
如图: mysql 中的这个长度设置,即 int(n) 是什么意思,以及“无符号”和“填充零”又代表什么意思? 无符号: 首先int(n),Integer(n) 长度为32位二进制整数(4字节),勾选上“无符号”时表示禁止负数,取值从0开始。此时可以表示的范围是 0 ---- 2e(32)-1 ,你可以存储任何在这个范围内的数字。(即符号位也用于具体数字的存储) 填充零: 勾选上“零填充”之后就会有很大的不同,若选择 int(4),存储 18 (十进制),则数据库中显示的是 0018(十进制),如果填写 12345(十进制),此时超过了选择的指定宽度 4,但未超过 int 可存储范围(无符号时:0 ---- 2e(32)-1),会按原样存储。 int(n): n 的定义与存储空间没有任何关系,底层存储还是4个字节。 此处的 int(n) 中的 n 仅仅指的是显示宽度,显示宽度只用于显示,并不能限制取值范围和占用空间,如:int(3) 会占用 4 个字节的存储空间,并且允许的最大值也不会是 999,而是 int 整型所允许的最大值(无符号时:2e(32)-1)。 该可选显示宽度规定用于显示宽度小于指定的列宽度的值时从左侧填满宽度。显示宽度并不限制可以在列内保存的值的范围,也不限制超过列的指定宽度的值的显示。 即 mysql 需要用多少个十进制位来显示该列数值。int

字符串转换成十进制整数

喜欢而已 提交于 2020-02-17 06:44:13
输入一个以#结束的字符串,本题要求滤去所有的非十六进制字符(不分大小写),组成一个新的表示十六进制数字的字符串,然后将其转换为十进制数后输出。如果在第一个十六进制字符之前存在字符“-”,则代表该数是负数。 输入格式: 输入在一行中给出一个以#结束的非空字符串。 输出格式: 在一行中输出转换后的十进制数。题目保证输出在长整型范围内。 输入样例: + - P - xf4 + - 1 ! # 输出样例: - 3905 # include <stdio.h> int main ( void ) { int i , k , count = 1 , j , number = 0 ; char a [ 81 ] , xin [ 81 ] ; i = 0 ; while ( ( a [ i ] = getchar ( ) ) != '\n' ) i ++ ; a [ i ] = '\0' ; //输入字符; k = 0 ; for ( i = 0 ; a [ i ] != '\0' ; i ++ ) { if ( a [ i ] >= '0' && a [ i ] <= '9' || a [ i ] >= 'a' && a [ i ] <= 'f' || a [ i ] >= 'A' && a [ i ] <= 'F' ) { xin [ k ] = a [ i ] ; //寻找十六进制的字符;

蓝桥杯(单片机组)学习笔记(六)--------DS1302

家住魔仙堡 提交于 2020-02-15 01:58:44
1.DS1302 DS1302是低功耗实时时钟芯片,它可以对年、月、日、周、时、分、秒进行计时,且具有闰年补偿等多种功能。主要特点是采用串行数据传输,可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能。 1.引脚分析 原理图 DS1302是BCD码作为编码方式的,而且是压缩BCD码,8位表示0-99整数(Year = 99),7位表示0-79整数(Sec、Min = 60),6位表示0-49整数(Hour = 24、Date = 31),5位表示0-19整数(Month = 12),4位表示0-9整数(WeekDay = 7)。DS1302是变种SPI,通过SCLK和I/O相互配合,发送和接收信息。SCLK在上升沿前,主机通过I/O口发送数据,DS1302在上升沿是接收;SCLK在下降沿后,DS1302通过I/O口发送数据,主机接收。 使用同步串行通讯简化了DS1302 与微处理器的接口。与时钟/RAM 通讯只需要三根线: CE(也是原理图上的RST,SDA)(读写时必须保持高电平),I/O (数据线), and SCLK (串行时钟)。 2.寄存器结构 如上图,命令字启动每一次数据传输. MSB (位 7)必须是逻辑1. 如果是 0,则禁止对DS1302写入. 位 6 在逻辑0时规定为时钟/日历数据,逻辑1时为RAM数据.位 1 至 位 5 表示了输入输出的指定寄存器

【ACM算法】-- 数学问题篇 - 进制转换

谁都会走 提交于 2020-02-15 01:50:42
第一题: 思路: 对于进制转换问题,其实理解了取模运算和 10 进制运算,基本是特别好理解的,在进制转换问题中,只需掌握,m 进制转换为 10 进制,10 进制转换为 n 进制即可,任何进制之间的转换,都已 10 进制为桥梁,这样的话,所有的进制题,都可以抽象成 10 进制转换问题。 理解: 在十进制中,我们要获得每一位的数值,需要数位拆解,每拆完一位,然后缩小目标数,再拆一位,取模运算中,产生的位一定不会超过模,仔细想一下,这就相当于把一个数改成模这种大小的一种进制,每缩一圈,都会产生一位。但是数值总大小是真正不会变的。这时候,我们不妨把一个数抽象成 数 X ,对于X这个数,现在他没有任何进制的表示,如果想要用10进制来表示,则对10取模,再缩小,再取模。如果想用2进制来表示,则对2取模。(注意:当数X本身就用2进制或其他进制来表示的时候,这时候的取当前进制数的模就变成了数位拆解。)以下就是更加疯狂地个人理解了:当其他进制向十进制转变的时候,需要位乘位权,这个过程是m进制先转换为数X,数X再转换为10进制,只不过,数X在现实世界中的表现形式与10进制相符合,所以这时候数X在转换成10进制,就相当于数位拆解了。 综上 ,忽略以上扯淡理解,就可以把数X就看成十进制数。这时候十进制数就是核心。由它负责向其他进制转换,而其他进制相互转换也必须经过十进制

python计算机二级操作题详解(一)

别等时光非礼了梦想. 提交于 2020-02-13 13:09:44
python计算机二级操作题详解(一) **1. 1.仅使用 Python 基本语法,即不使用任何模块,编写 Python 程序计算下列数学表达式的结果并输出,小数点后保留3位。 输入 该题目没有输入 输出 输出结果小数点后保留 3 位** x = pow ( ( 3 ** 4 + 5 * ( 6 ** 7 ) ) / 8 , 0.5 ) print ( "{:.3f}" . format ( x ) ) 详解: *从题目分析考点有pow()函数和format()数字的格式化。 描述 pow() 方法返回 xy(x的y次方) 的值。 语法 以下是 math 模块 pow() 方法的语法: import math math . pow ( x , y ) 内置的 pow() 方法 pow ( x , y [ , z ] ) 函数是计算x的y次方,如果z在存在,则再对结果进行取模,其结果等效于pow(x,y) %z 注意:pow() 通过内置的方法直接调用,内置方法会把参数作为整型,而 math 模块则会把参数转换为 float。 参数 x – 数值表达式。 y – 数值表达式。 z – 数值表达式。 返回值 返回 xy(x的y次方) 的值。* fomat()数字的格式化。 其中常见的格式设置有: ^, <, > 分别是居中、左对齐、右对齐,后面带宽度, : 号后面带填充的字符

字符串习题

荒凉一梦 提交于 2020-02-13 01:04:06
1、 /* 在字符串中获取字符的方法 第一种方法: String str="gaganoig"; char c=str.charAt(3); System.out.println(c);//结果 a 这种方法得到的是char类型的数据 第二种方法: String str="gaganoig"; String c=str.substring(3,4); System.out.println(c);//结果 a 这种方法得到的是String类型的数据 数据:用户输入的密码 指令:提示用户输入一个密码 判断密码是否有效 输出 步骤: 1、提示用户输入一个密码 2、判断密码是否有效 有效就输出Valid password 无效就输出Invalid password */ import java . util . Scanner ; class ProblemFour { public static void main ( String [ ] args ) { Scanner scanner = new Scanner ( System . in ) ; //1、提示用户输入一个密码 System . out . print ( "请输入密码:" ) ; //cipher密码 String cipher = scanner . nextLine ( ) ; if ( isCipher (

c和c++中读取数据的方式总结

牧云@^-^@ 提交于 2020-02-11 20:41:19
目录 c 输出 printf() 输入 scanf getchar(), putchar() gets(), puts() c++ 输入 cin() getline() get() 输出 cout 最近在学习C和C++,除了在写OS的时候用到外,写算法的时候也会用到,整理记录C和C++读取数据的各种方式。 文章较长,总结稍微详细了一点。 c 输出 printf() 在 stdio.h 中包含最经典的输出函数 printf #include <stdio.h> // 执行 printf() 函数需要该库 int main() { printf("hello weiwei"); //显示引号中的内容 return 0; } 格式化输出,在 printf 中格式化输出的格式: 1)类型 格式字符 含义 d 以十进制形式输出带符号整数(正数不输出符号) o 以八进制形式输出无符号整数(不输出前缀0) x,X 以十六进制形式输出无符号整数(不输出前缀Ox) u 以十进制形式输出无符号整数 f 以小数形式输出单、双精度实数 e,E 以指数形式输出单、双精度实数 g,G 以%f或%e中较短的输出宽度输出单、双精度实数 c 输出单个字符 s 输出字符串 p,P %p 是一个新的格式控制符,它表示以十六进制的形式(带小写的前缀)输出数据的地址。如果写作 %P ,那么十六进制的前缀也将变成大写形式。