Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.11.21;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.008 c
14-69523
SPeller
2002-11-02 18:49
2002.11.21
Как приятно на своей машине смотреть фильмы :-)


3-69180
sova
2002-10-31 18:13
2002.11.21
Как проверить возможность подключения к базе не вызывая исключени


1-69407
Eva
2002-11-10 18:06
2002.11.21
Экспортирование отчетов FastReport в Excel


1-69418
Holy
2002-11-11 11:42
2002.11.21
Помогите создать класс, принимающий сообщения


4-69628
TankMan
2002-10-08 04:37
2002.11.21
Выключение компа но не простое.....:)





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