When I was making something today, I discovered a few interesting places. I wrote them down to share with you. Start with a few small questions
Perhaps you will say it is very simple, use two fields, one start=>Start age, and one end=>End age, or in one field, use the format of start|end, with one in the middle Separate them with non-numbers, or use start|start-end, haha, there are many methods anyway, but if you ask for an upgrade at this time, you are asked to express the ages of 10~20, 25, 29~40, how do you express them? Of course, you can also express it through a string, such as: 10-20|25|29-40, and set some rules to express it yourself. But can this representation method be optimized? The answer is yes.
You can use the 01 string to represent a non-repeating age interval. The default is 100 0s, marking the position from 1 to 100 years old. If it is 1, it means that the age is present, and if it is zero, it means that there is no such age. For ease of explanation, 10 zeros are used here to represent 1 to 10 years old, then:
<p>0111111000 => 表示2~7岁</p> <p>0110111010 => 表示2~3、5~7、9岁</p>
Haha, is it very convenient to express and easy to understand? Of course, this also has its shortcomings. It is very convenient to express, but it is really inconvenient to use and requires calculation.
Of course, there are many ways to do this, such as using string representation and dividing each number with non-digits, like this: 1|5|100|199. What I want to say is still represented by a string of 01, just like the 1~200 above. For the problem of selecting part of it, I can use a string of 200 positions, each position is 0 or 1, and each position is placed is its corresponding number. In this case, this information will be represented as a string of 01. Let’s give an example based on 0~10
<p>0111111000 => 表示2、3、4、5、6、7</p> <p>0110111010 => 表示2、3、5、6、7、9</p>
Of course, some people may say that the data I want to represent is not continuous. For example, I want to represent
1926, 19658, 12, 5638, 8975, 965, 369, 5126, 5698, 14556
Some of the above numbers are very large, some are very small, and there is no pattern. We want to indicate that the largest number of them will not be used if the total number does not exceed 10 (for example, 19658 0s here), Of course not. In this case, mapping can be used. The mapping relationship is as follows:
<span>1</span> => <span>1926</span><span>, </span><span>2</span> => <span>19658</span><span>, </span><span>3</span> => <span>12</span><span>, </span><span>4</span> => <span>5638</span><span>, </span><span>5</span> => <span>8975</span><span>, </span><span>6</span> => <span>965</span><span>, </span><span>7</span> => <span>369</span><span>, </span><span>8</span> => <span>5126</span><span>, </span><span>9</span> => <span>5698</span><span>, </span><span>10</span> => <span>14556</span>
At this time, if you want to express the selection of 1926, 12, 5698, you can use the following 01 string:
1010000010
Perhaps you have also discovered that this can also have the effect of saving traffic. When the two parties interact, we establish the mapping relationship. When transmitting over the network, we do not need to transmit the real data, only the corresponding 01 string. That’s it.
Of course, this can also mean many things. For example, I divided a day into 1 segment of 5 minutes, with a total of 288 segments. At this time, I randomly selected some 5-minute segments from them, and used 288 segments. The length of 01 string indicates whether this is good, haha.
In some cases, this 01 string representation method is quite desirable, and sometimes it can save traffic.
The copyright of this article belongs to the author iforever (luluyrt@163.com). Any form of reprinting is prohibited without the consent of the author. After reprinting the article, the author and the original text link must be given in an obvious position on the article page.