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

Вниз

нехватка мозга   Найти похожие ветки 

 
mazepa   (2002-11-11 21:54) [0]

Уважаемые знатоки ! помоги решить сл. задачу:
Есть набор чисел, напр. 57H,00H,89H как превратить их в число
570089 типа integer ???
Огромное спасибо...


 
Snap   (2002-11-11 21:57) [1]

переводишь все числа в шестнацатеричное текстовое представление, складываешь строки, и переводишь по strtoint


 
mazepa   (2002-11-11 22:04) [2]

Все дело в том что эти три числа явл. тел. номером и таких их разных столько что ну его в сторону... как нибудь по другому низя ??? а то моя прога их до утра переводить будет :)


 
xm   (2002-11-11 22:19) [3]

a*10000+b*100+c :)

или что-то вроде того


 
mazepa   (2002-11-11 22:25) [4]

а числа то в hex записаны :(


 
xm   (2002-11-11 22:33) [5]

если складывать FFh, FFh и FFh что получится?
если MaxInt - то a*1000+b*100+c
если FFFFFFh - то inttohex(a*16*16*16*16+b*16*16+c,7)


 
mazepa   (2002-11-11 22:37) [6]

здесь важно время выполнения...


 
xm   (2002-11-11 22:37) [7]

тут стало все оптимизировать модно, короче
если FFFFFFh - то inttohex((a shl 16)+(b shl 8)+c,6);


 
TTCustomDelphiMaster   (2002-11-11 22:40) [8]

function BcdToByte(b: byte): byte;
begin
Result := (b and $F) + (b shr 4) * 10;
end;
...
var
i: integer;
begin
i := 10000 * BcdToByte($57) + 100 * BcdToByte($00) + BcdToByte($89);
ShowMessage(Inttostr(i));
end;


 
mazepa   (2002-11-11 23:09) [9]

Чаво-та твоя функция i := 10000 * BcdToByte($57) + 100 * BcdToByte($65) + BcdToByte($89) возвращает мне i=63589 ???
а надо 576589 ???


 
mazepa   (2002-11-11 23:26) [10]

to xm
а как быть если чисел больше чем 3 ???


 
Тормоз   (2002-11-12 06:07) [11]

Если тебе нужно поставить байт во вторую позицию (справа), то просто ножно его умножить на 256(или $100), если на третью-то соответственно на 65536 ($10000) и т.д. Вот и все


 
MBo   (2002-11-12 06:42) [12]

>а как быть если чисел больше чем 3 ???
Явно не помешает поучаствовать в обучении у Ю.Зотова (в форуме Потрепаться)


 
vidiv   (2002-11-12 08:23) [13]

Олег, может поможет, я в свое время так IP адрес кодировал
Объявляешь где нибудь:

function TelephoneConvert(n1,n2,n3:byte;n4:byte=0;numercount:integer=6):integer;
type TConvertType=
record
case byte of
0:(TelephoneNumberCode:integer);
1:(n1,n2,n3,n4:byte);
end;
var Convert:TConvertType;
t:integer;
aresult:integer;
begin
Convert.n1 := n1;
Convert.n2 := n2;
Convert.n3 := n3;
Convert.n4 := n4;
val(inttohex(Convert.TelephoneNumberCode,numercount),aresult,t);
if t<>0 then result:=-t else result:=aresult;
end;


Использование:
Пусть номер телефона 49-65-27:
ShowMessage(inttostr(TelephoneConvert($27,$65,$49)));//числа наоборот
Пусть номер телефона 49-65-27-65:
ShowMessage(inttostr(TelephoneConvert($65,$27,$65,$49,8)));//числа наоборот
Пусть номер телефона 965-27-65:
ShowMessage(inttostr(TelephoneConvert($56,$27,$65,$9,7)));//числа наоборот

желаю удачи


 
vidiv   (2002-11-12 08:27) [14]

Проще будет
function TelephoneConvert(n4,n3,n2,n1:byte=0;numercount:integer=6):integer;


 
xm   (2002-11-12 20:07) [15]

>to xm
>а как быть если чисел больше чем 3 ???

program P;
{$APPTYPE CONSOLE}
uses
SysUtils;
var a:array[0..6] of int64;x:int64;hi,i:integer;
begin
a[0]:=$aa;
a[1]:=$bb;
a[2]:=$11;
a[3]:=$22;
a[4]:=$33;
a[5]:=$AA;
a[6]:=$13;//Больше 7 нельзя - непомещается %)
hi:=high(a);
for i:=0 to hi do x:=x+(a[hi-i] shl(8*(i)));
writeln(inttohex(x,50));
readln;
end.






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

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

Наверх





Память: 0.47 MB
Время: 0.012 c
14-69564
mvg_first
2002-10-31 10:48
2002.11.21
А что случилось с клиентами для этих форумов?


6-69464
Best Before 2024
2002-09-25 16:52
2002.11.21
Курсы валют


4-69623
DeCompiler
2002-10-09 22:21
2002.11.21
Клик мышкой в чужом окне


3-69124
Ryser
2002-11-04 11:26
2002.11.21
Выделение цветом определенной строки в DBGrid


14-69509
Gizmo
2002-10-30 00:32
2002.11.21
Как компилируется TNMUDP ?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский