Главная страница
    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.008 c
1-69402
vilfred
2002-11-09 23:13
2002.11.21
что это за ошибка?


3-69220
studentik
2002-10-30 03:33
2002.11.21
Кодировка 1251, символ


6-69469
странно...
2002-09-25 17:09
2002.11.21
resolve dns address


1-69228
X-Guest...
2002-11-10 18:56
2002.11.21
Подскажите плз, как обычно кодируют файл?


1-69342
theEnter
2002-11-12 07:18
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский