该死的While循环
本文将列举一个使用While循环导致死循环的实例。
但凡看过一点通讯协议的人对以下的数据结构应该不会陌生:
+-----------------+
| tag_1 |
+-----------------+
| len_1 |
+---+-------------+
| c | tag_1.1 |
+ +-------------+
| o | len_1.1 |
+ +-------------+
| n | content_1.1|
+ +-------------+
| t | tag_1.2 |
+ +-------------+
| e | len_1.2 |
+ +-------------+
| n | content_1.2|
+ +-------------+
| t | ...... |
+ +-------------+
| 1 | ...... |
+---+-------------+
具体举例如下:
该数据结构在某协议的定义里面是这样的。
TAG 是 1个字节,从0~0xFF,表明某数据的类型
LEN 是 1个字节,表明该数据的总长度(包括TAG+LEN+CONTENT)
CONTENT 数据内容的长度根据LEN来确定。
其中某种TAG的内容字段,可能是包涵其他N个TAG及其内容。(N值一般没有显式定义)
对照这个图我们可以看到:
TAG1 就包涵有TAG1.1、TAG1.2 ...
那么我们程序一般会怎么写呢?
为使程序简单,我们先做一些假设:
1、TAG1已解码