>  기사  >  백엔드 개발  >  01문자열의 활용

01문자열의 활용

WBOY
WBOY원래의
2016-08-08 09:26:261328검색

오늘 뭔가를 만들다가 몇 가지 흥미로운 곳을 발견해서 적어서 공유해 봤습니다. 몇 가지 작은 질문부터 시작하세요

연령대를 어떻게 표현하나요? "50~70" 같은 표현을 할 수 있나요?

아마도 매우 간단하다고 말할 것입니다. 하나는 시작=>시작 연령, 하나는 종료=>종료라는 두 개의 필드를 사용하거나, 한 필드에서 시작|끝 형식을 사용하고 middle 숫자가 아닌 것으로 구분하거나, start|start-end를 사용하거나, ㅎㅎ 암튼 방법은 여러가지가 있는데 이때 업그레이드 해달라고 하면 10~20세, 25세, 29세 연령을 표현하라고 하네요 ~40, 어떻게 표현하나요? 물론 10-20|25|29-40과 같은 문자열을 통해서도 표현할 수 있고, 몇 가지 규칙을 설정해 직접 표현할 수도 있습니다. 하지만 이 표현 방식을 최적화할 수 있을까요? 대답은 '예'입니다.

01 문자열을 사용하여 반복되지 않는 연령 간격을 나타낼 수 있습니다. 기본값은 100 0이며, 1부터 100까지의 위치를 ​​표시합니다. 1이면 해당 연령이 있음을 의미합니다. 0이면 그런 나이가 없다는 뜻이다. 설명의 편의를 위해 여기서는 1~10년을 나타내는 데 10개의 0을 사용했습니다.

0111111000  => 2~7세를 의미합니다

0110111010  => 2~3세, 5~7세, 9세를 뜻합니다

하하, 표현하기가 너무 편리하고 이해하기 쉬운가요? 물론 이것도 단점이 있지만, 사용하기가 정말 불편하고 계산도 필요합니다.

1, 2, 3,..., 199, 200 중에서 무작위로 숫자를 선택하세요. 어떻게 표현하나요?

물론 문자열 표현을 사용하고 각 숫자를 1|5|100|199와 같이 숫자가 아닌 숫자로 나누는 등 여러 가지 방법으로 이를 수행할 수 있습니다. 내가 말하고 싶은 것은 여전히 ​​위의 1~200과 마찬가지로 01이라는 문자열로 표현된다. 그 중 일부를 선택하는 문제는 200개의 위치로 구성된 문자열을 사용할 수 있으며, 각 위치는 0 또는 1이고 각 위치는 다음과 같다. 해당 번호가 배치됩니다. 이 경우 이 정보는 01이라는 문자열로 표시됩니다. 0~10을 기준으로 예를 들어보겠습니다

0111111000  => 2, 3, 4, 5, 6, 7을 뜻합니다

0110111010  => 2, 3, 5, 6, 7, 9를 뜻합니다

물론 어떤 분들은 제가 표현하고 싶은 데이터가 연속적이지 않다고 말씀하실 수도 있습니다.

 1926, 19658, 12, 5638, 8975, 965, 369, 5126, 5698, 14556

위 숫자 중 일부는 매우 크고 일부는 매우 작으며 패턴이 없습니다. 총 개수가 10을 초과하지 않으면(예: 19658) 그 중 가장 큰 숫자는 사용되지 않음을 나타냅니다. 여기서는 0), 물론 그렇지 않습니다. 이 경우 매핑 관계는 다음과 같습니다.

<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>
이때 1926, 12, 5698의 선택을 표현하고 싶다면 다음과 같은 01 문자열을 사용하면 됩니다.

 1010000010

아마도 이것이 트래픽을 절약하는 효과도 있다는 것을 발견했을 것입니다. 두 당사자가 상호 작용할 때 우리는 네트워크를 통해 전송할 때 실제 데이터를 전송할 필요가 없고 해당하는 데이터만 전송할 필요가 있습니다. 01 문자열입니다.

물론 이는 많은 의미를 가질 수도 있습니다. 예를 들어 하루를 5분씩 1개 세그먼트로 나누어 총 288개의 세그먼트를 무작위로 선택했습니다. 288개의 세그먼트를 사용했습니다. 01 문자열의 길이는 이것이 좋은지 여부를 나타냅니다. 하하.

어떤 경우에는 이 01 문자열 표현 방법이 매우 바람직하고 때로는 트래픽을 절약할 수 있습니다.

이상 내용의 측면을 포함하여 01 문자열의 사용법을 소개했습니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.