Когда кодировать пробел в плюс (+) или% 20?

Это код для микроконтроллера PIC18 на языке C:

void main() {
int s1='0';
int d0;
int d1;
//if (s1 == '0') {d1 = '0'; d0 = '0';}
//else if (s1 == '1') {d1 = '0';d0 = '1';}
//else if (s1 == '2') {d1 = '1';d0 = '0';}
//else if (s1 == '3') {d1 = '1';d0 = '1';}
switch (s1) {
      case  '0': {d1 = '0';d0 = '0';} break;
      case  '1': {d1 = '0';d0 = '1';} break;
      case  '2': {d1 = '1';d0 = '0';} break;
      case  '3': {d1 = '1';d0 = '1';} break;
    }
}

С ifs

s1='0' - 14 cycles
s1='1' - 21 cycles
s1='2' - 28 cycles
s1='3' - 33 cycles
s1='4' - 34 cycles

С помощью случаев

s1='0' - 17 cycles
s2='1' - 23 cycles
s3='2' - 29 cycles
s4='3' - 35 cycles
s5='4' - 32 cycles

So i может предположить, что на очень низком уровне ifs быстрее. Код в ПЗУ также короче.

433
задан the Tin Man 28 October 2013 в 00:24
поделиться

1 ответ

+ означает пробел только в содержании application / x-www-form-urlencoded , например, в части запроса URL:

http://www.example.com/path/foo+bar/path?query+name=query+value

В этом URL , имя параметра - имя запроса с пробелом, а значение - значение запроса с пробелом, но имя папки в пути буквально foo + bar , не foo bar .

% 20 - допустимый способ кодирования пробела в любом из этих контекстов. Поэтому, если вам нужно URL-кодировать строку для включения в часть URL-адреса, всегда безопасно заменить пробелы на % 20 , а плюсы на % 2B . Это то, что напр. encodeURIComponent () выполняет в JavaScript. К сожалению, это не то, что urlencode делает в PHP ( rawurlencode безопаснее).

См. Также HTML 4.01 Specification application / x-www-form-urlencoded

447
ответ дан 22 November 2019 в 23:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: