国标里所有东西都有 20 位编号,它不是流水号,是五段有含义的编码。 平台、设备、通道用同一套规则,靠第 11 到 13 位区分身份。
前面反复出现「20 位编号」,这一节把它拆开。 这是全书最该背下来的一条规则,因为后面每一个流程都要用到它。 Demo 把一串真实编号逐段拆开,再试三种错误写法。
一、五段,各管一件事
20 位分成五段: 1 到 8 位是中心编码、9 到 10 位是行业编码、11 到 13 位是类型编码、14 位是网络标识、 15 到 20 位是序号。 中心编码是和上级平台绑定的,下级平台注册时,这 8 位必须是上级分配的, 否则能注册上但目录同步不下来。 类型编码是最有用的一段,它直接说明「这是个什么东西」: 200 是平台、131 是摄像机、132 是录像机、118 是报警主机。 序号那 6 位是纯流水,但它有个隐含约束:同一类设备在同一中心下不能重号。 所以六位最多九十九万多个,对一个市级平台来说够用,对省级要规划分段。
二、纯数字,一个字母都不许有
这条最容易踩:国标编号是纯数字,大写字母一个都不许有。 而很多人从别的系统导过来的资产编号里带字母,直接塞进平台就注册不上。 更麻烦的是它不报错:平台既不回「格式错」,也不告诉你为什么,它只是不理你。 所以排障时「注册没反应」的第一件事,就是拿编号去数位数、看字符。 还有两个常见的写法错:少一位(19 位)、多一位(21 位)。 这两个都不会报错,只会「查无此设备」。 所以工程上有个笨办法但很有效:把编号规则写进设备端的界面校验里, 长度必须是 20、必须全是数字,不合格直接不让保存—— 把错误挡在录入那一刻,比事后抓包快一百倍。
三、动手 Demo:20 位编号,五段各管一件事
把 34020000001320000001 逐段拆开,再用三种错误写法看看各自错在哪。
code = "34020000001320000001"
parts = [(0, 8, "中心编码"), (8, 10, "行业编码"), (10, 13, "类型编码"),
(13, 14, "网络标识"), (14, 20, "序号")]
for a, b, name in parts:
print(name, code[a:b])
for bad in ("3402000000132000001", "340200000013200000011",
"3402000000132000000A"):
print(bad, len(bad), bad.isdigit())
实跑输出:
--------------------------------------------------------------------
20 位编号,五段各管一件事
--------------------------------------------------------------------
**国标最基础的一条规则就是「所有东西都有 20 位编号」**。**它不是流水号,是五段有含义的编码。**
位置 这一段 含义
-----------------------------------------------
**1~8 位** **34020000** **中心编码**
**9~10 位** **00** **行业编码**
**11~13 位** **132** **类型编码**
**14 位** **0** **网络标识**
**15~20 位** **000001** **序号**
**第三段是最有用的一段**,它的取值直接说明「这是个什么东西」:
类型码 是什么
-----------------------------------
**200** **平台(SIP 服务器)**
**131** **摄像机**
**132** **网络录像机**
**118** **报警主机**
**所以上面那串 `34020000001320000001` 一读就懂**:
**中心 34020000、行业 00、类型 132(NVR)、网络标识 0、序号 000001。**
**再来看三个常见错误**:
编号 为什么不行
---------------------------------------------
`3402000000132000001` **只有 19 位**
`340200000013200000011` **多了一位**
`3402000000132000000A` **含非数字字符**
**注意第三条**:**国标编号是纯数字,大写字母一个都不许有**。
**而很多人从别的系统导过来的资产编号里带字母,直接塞进平台就注册不上**——
**平台不报「格式错」,它只是不理你。**
拆开就能读懂:中心 34020000、行业 00、类型 132(录像机)、网络标识 0、序号 000001。
一眼就知道这是一台挂在 34020000 这个中心下的第一台 NVR。
第二张表的类型码值得背下来:200 平台、131 摄像机、132 录像机、118 报警主机。
看到 200 就知道它不该出现在设备列表里,看到 132 就知道「它下面还挂着通道」。
最后那张表里的第三种错最坑:只有 19 位和多一位都能靠长度一眼看出,而那个 A 藏在末尾,
长度对、数字的错觉也对,复制粘贴的时候根本发现不了。
isdigit() 那一列就是为了抓这种东西。
30 秒实验
- 算一下:序号六位最多多少个?(一百万个,但实际从 000001 起算)
- 想一下:类型码 200 和 132 分别是什么?
- 想一下:为什么「编号带字母」不报错却会失败?
常见误区
- 以为「编号是流水号」。 它五段各有含义,类型段直接说明身份。
- 以为「带字母也能用」。 国标编号纯数字,带字母不报错但永远查不到。
- 以为「中心编码可以自己编」。 必须用上级分配的,否则注册成功但目录为空。
自测三问(点开对答案)
1. 20 位编号的五段分别是什么? —— **中心 8 位、行业 2 位、类型 3 位、网络标识 1 位、序号 6 位**。 2. 类型码 131 和 132 分别是什么? —— **131 摄像机、132 网络录像机**。 3. 编号带字母会有什么现象? —— **注册不上,但不报格式错**,平台只是不理你。下一节算带宽:码率是选出来的,选错了后面全错。
- ☐ (本节完,下一节 10.05.02 媒体压缩编解码)