Программинг Форум для тем связанных с программированием
11.11.2010, 20:40
#1
Новичок
Регистрация: 13.05.2010
Адрес: Минск
Сообщений: 13
Сказал Спасибо: 6
Имеет 0 спасибок в 0 сообщенях
Конкурс на самый быстрый код!
Есть функция
Delphi Код:
Function GetInt( const ss:string ) :integer ;
var i:byte ; tmp:string ;
begin
for i := 1 to length ( ss) do Insert ( IntToHex ( ord ( ss[i]) ,2 ) ,tmp,i*2 ) ;
result := StrToInt ( '$' +tmp) ;
end ;
//ss = 'cons' = #$63#0 #$6F#0 #$6E#0 #$73#0
//tmp = '636F6E73'
//result = $636F6E73
Реально ли через Move() написать ?
Последний раз редактировалось LAV45, 13.11.2010 в 01:36 .
11.11.2010, 20:49
#2
Рыцарь
Регистрация: 07.03.2009
Сообщений: 9,139
Сказал Спасибо: 70
Имеет 2,820 спасибок в 1,735 сообщенях
delphi Код:
Function GetInt( const str :string ) :integer ;
var
Tmp: array[0 ..4 ] of byte absolute result;
begin
move ( str[1 ],tmp[3 ],1 ) ;
move ( str[2 ],tmp[2 ],1 ) ;
move ( str[3 ],tmp[1 ],1 ) ;
move ( str[4 ],tmp[0 ],1 ) ;
end ;
естественно нужно учитывать что во входящей строке должно быть 4 байта (инт).
__________________
L2Ext - project closed.
Последний раз редактировалось alexteam, 11.11.2010 в 20:55 .
11.11.2010, 21:21
#3
Admin!
Регистрация: 04.08.2007
Сообщений: 2,360
Сказал Спасибо: 113
Имеет 1,566 спасибок в 651 сообщенях
alexteam , типа сделал то что попросили?)
LAV45 , вот так будет наиболее быстро и с проверками на размер строки:
delphi Код:
function GetInt( const s: string ) : Integer ;
var
r: array[0 ..3 ] of Char absolute Result;
i, c: Integer ;
begin
Result := 0 ;
c := Length ( s) ;
if c > 4 then c := 4 ;
for i := 4 - c to 3 do r[i] := s[4 - i];
end ;
__________________
Я здесь практически не появляюсь!, Skype - ikskor
За это сообщение xkor нажился спасибкой от:
11.11.2010, 21:31
#4
Рыцарь
Регистрация: 07.03.2009
Сообщений: 9,139
Сказал Спасибо: 70
Имеет 2,820 спасибок в 1,735 сообщенях
точна, можно было "оф чар" сделать. и тупо присваивания, не вызывая функцию!
__________________
L2Ext - project closed.
11.11.2010, 21:59
#5
Новичок
Регистрация: 13.05.2010
Адрес: Минск
Сообщений: 13
Сказал Спасибо: 6
Имеет 0 спасибок в 0 сообщенях
Цитата:
Сообщение от
alexteam
точна, можно было "оф чар" сделать. и тупо присваивания, не вызывая функцию!
Это как ? ))
xkor , с проверкой на длину строки это я погорячился, да и парядок байт менять на обратный не обязательна.
Данная функция нужна для работы со спроками используя case
Код:
str := copy(s,idx,4);
case GetInt(str) of
......
end;
вариант с TStringList по моему как-то жирно тут выглядит
Код:
str := copy(s,idx,4);
case tag.IndexOf(str) of
......
end;
initialization
tag := TStringList.Create;
tag.CommaText := 'трам,пам ,пам';
finalization
tag.Free;
Последний раз редактировалось LAV45, 11.11.2010 в 22:27 .
11.11.2010, 22:29
#6
Рыцарь
Регистрация: 07.03.2009
Сообщений: 9,139
Сказал Спасибо: 70
Имеет 2,820 спасибок в 1,735 сообщенях
это типо так.
delphi Код:
Function GetInt( const str :string ) :integer ;
var
Tmp: array[0 ..4 ] of char absolute result;
begin
tmp[3 ] := srt[1 ];
tmp[2 ] := srt[2 ];
tmp[1 ] := srt[3 ];
tmp[0 ] := srt[4 ];
end ;
__________________
L2Ext - project closed.
За это сообщение alexteam нажился спасибкой от:
11.11.2010, 22:59
#7
Новичок
Регистрация: 13.05.2010
Адрес: Минск
Сообщений: 13
Сказал Спасибо: 6
Имеет 0 спасибок в 0 сообщенях
Всем биг спс ))
ss то у нас #$63#0 #$6F#0 #$6E#0 #$73#0
если использывать Tmp: array[0..3] of char absolute result;
#0 остаются и на выходе получаем $63006F00
Вот так лучше будет
Код:
Function GetInt(const ss:string):integer;
var tmp: array[0..3] of byte absolute result;
begin
tmp[3] := ord(ss[1]);
tmp[2] := ord(ss[2]);
tmp[1] := ord(ss[3]);
tmp[0] := ord(ss[4]);
end;
Последний раз редактировалось LAV45, 11.11.2010 в 23:18 .
12.11.2010, 12:42
#8
Рыцарь
Регистрация: 07.03.2009
Сообщений: 9,139
Сказал Спасибо: 70
Имеет 2,820 спасибок в 1,735 сообщенях
и чем оно отличаеццо ?
__________________
L2Ext - project closed.
12.11.2010, 19:40
#9
Пользователь
Регистрация: 11.06.2009
Сообщений: 50
Сказал Спасибо: 1
Имеет 5 спасибок в 4 сообщенях
Цитата:
Сообщение от
alexteam
и чем оно отличаеццо ?
Как думаешь, чем отличается в юникод системе char от байта ?
__________________
рукалицо.жпг
12.11.2010, 19:59
#10
Рыцарь
Регистрация: 07.03.2009
Сообщений: 9,139
Сказал Спасибо: 70
Имеет 2,820 спасибок в 1,735 сообщенях
интересно, где ты в коде нашел файдчар\вайдстринг, чтобы такие вопросы задавать.
на входе анси строка.
__________________
L2Ext - project closed.
Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
Часовой пояс GMT +4, время: 12:54 .
vBulletin style designed by
MSC Team .
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод:
zCarot
Вы хотите чувствовать себя в безопасности? чоп Белган обеспечит её!