Форум: "Основная";
Текущий архив: 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.007 c