Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.08.22;
Скачать: [xml.tar.bz2];

Вниз

HexToStr   Найти похожие ветки 

 
Blackweber   (2002-08-07 20:05) [0]

Привет.
У меня проблема преобразования строки запроса, при использовании метода GET.Это например когда в Яндексе после адреса к поисковому скрипту идет ?query=erfjnerkj. Так вот русские буквы и спец.символы кодируются в шестнадцатеричной системе, т.е. русская "б" это %E1.
Может кто-нибудь ответит на вопрос: если есть ф-ция IntToHex, почему нет ф-ции HexToInt?
Я нашел ф-цию StrtoIntDef, но как-то странно она(или я) работает.
Устав от поисков я использовал следующее:
function HexToStr(s:string):string;
var p:integer; c:byte;
const hex="0123456789ABCDEF";
begin
if s <> "" then begin
p := 1;
while p <= Length(s) do begin
if s[p] = "+" then s[p] := " "
else
if s[p] = "%" then
begin
c := 0;
if (p + 1) <= Length(s) then c := Pos(Upcase(s[p + 1]), HEX) shl 4;
if (p + 2) <= Length(s) then c := c or Pos(Upcase(s[p + 2]), HEX);
System.Delete(s, p + 1, 2);
if (c<>239)or(c<>207)then s[p] := char(c-17);{ else
case c of
239 : s[p]:=char(239); //////
207 : s[p]:=char(207); //////
end;}
end;
Inc(p);
end;
result:=s;
end;

Комментируемая часть у меня используется для поправки:
Все буквы за исключением "п"(char(239)) и "П"(char(207)) декодируются нормально, а эти в "Я"(char(223)) и "i"(char(191)).
Вопрос: Почему?


 
SuperIgor   (2002-08-07 21:53) [1]

Нашел тут алгоритм HEX>>>Int
Может поможет.

№1
****
var

i : integer
s : string;
begin

s := "$" + ThatHexString;
i := StrToInt(a);
end;
****

№2
****
CONST HEX : ARRAY["A".."F"] OF INTEGER = (10,11,12,13,14,15);
VAR str : String;

Int,
i : integer;
BEGIN

READLN(str);
Int := 0;
FOR i := 1 TO Length(str) DO
IF str[i] < "A" THEN Int := Int * 16 + ORD(str[i]) - 48
ELSE Int := Int * 16 + HEX[str[i]];
WRITELN(Int);
READLN;
END.
****


 
blackweber   (2002-08-07 23:43) [2]

что-то я не совсем понял насчет N1. Это вообще к чему?
Второй щас попробую, но ПАЛЮБОМУ спасибо.


 
Anatoly Podgoretsky   (2002-08-07 23:48) [3]

Это плохо, что ты не понял, а ты тогда просто попробуй


 
blackweber   (2002-08-08 02:49) [4]

>N1
Я бы наверно понял если бы не ThatHexString и a.
>Anatoly Podgoretsky
А насчет моей ф-ции ничего сказать неможете?


 
Anatoly Podgoretsky   (2002-08-08 08:00) [5]

Вот тебе насчет твоей функции

SuperIgor © (07.08.02 21:53)
s := "$" + ThatHexString;
i := StrToInt(a);

или проще StrToInt("$" + HexString);


 
blackweber   (2002-08-10 00:20) [6]

Все понял, большое спасибо.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.08.22;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.007 c
1-71252
Иван
2002-08-12 09:15
2002.08.22
Переменное кол-во параметров


3-70961
Прохожий
2002-08-02 12:15
2002.08.22
Уважаемые Мастера. Как получить список доступных в сети MSSQL-сер


3-71022
Виталий Панасенко
2002-07-31 19:10
2002.08.22
ПОМОГИТЕ !!!


14-71374
Gregson
2002-07-25 13:59
2002.08.22
надо


1-71214
3asys
2002-08-09 22:05
2002.08.22
Потомки выбранного узла TTreeNode





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский