Главная страница
    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.007 c
1-69429
Hammer1
2002-11-11 10:46
2002.11.21
Char


14-69552
vopros
2002-11-01 16:12
2002.11.21
Про книжку


1-69330
Sartak
2002-11-11 21:27
2002.11.21
Привет всем! Проблема со стыковкой форм, как в winamp,е


1-69359
Ciber SLasH
2002-11-13 03:30
2002.11.21
Heeeeeeeeeeeeeeeeeelp!!!!!!!


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