Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.68
AET
1 / 1 / 2
Регистрация: 27.04.2008
Сообщений: 64
#1

Считывать из файла по 2 байта, и менять старший байт с младшим местами - Delphi

28.06.2011, 17:50. Просмотров 2643. Ответов 18
Метки нет (Все метки)

подскожите как зделать чтобы из файла считывать по 2 баита и менять их местами младши бать с старшим баитом и сложить их НЕХ значения со следуюшим 2 баитами поменяв их местами старши баит с младчим баитом и так до конца файла
http://www.cyberforum.ru/c-beginners/thread180180.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.06.2011, 17:50
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Считывать из файла по 2 байта, и менять старший байт с младшим местами (Delphi):

Для целого числа А выделить старший байт и поставить его на место младшего байта. старший байт при этом обнулить.
Помогите пожалуйста, вообще не могу понять как делать следующее...Еще и в...

Программа, которая считывает 8 байт из созданного файла MyFile.dat, начиная с 7-го байта, относительно начала, и 10 байт от конца файла
Привет, вот задание собсно Напишите программу, которая считывает 8 байт из...

Как в четырехбайтовом числе поменять местами старший и младший байт?
Помогите пожалуйста! Как в четырехбайтовом числе поменять местами старший и...

Считывать из файла по 512 байт и записывать их в новый файл
Надо считывать из файла по 512 байт и записывать их в новый файл. Так как я...

Закодировать файл. Взять 7 байт. Первый бит каждого байта переместить в 8 байт
Нужно открыть бинарный файл и закодировать следующим образом. Взять 7 байт....

18
wason
17 / 17 / 8
Регистрация: 21.04.2010
Сообщений: 110
28.06.2011, 17:54 #2
функции assignfile read и bytetohex очень помогут
0
AET
1 / 1 / 2
Регистрация: 27.04.2008
Сообщений: 64
28.06.2011, 19:53  [ТС] #3
Цитата Сообщение от wason Посмотреть сообщение
функции assignfile read и bytetohex очень помогут
а менять их местами старшый баит и младши байт

Добавлено через 45 минут
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
procedure TForm1.Button3Click(Sender: TObject);
var f1,f2 :File of byte ;
buf1,buf2,buf3,buf4 :char;
a,b : byte;
i,c,d:integer;
a1,b1:string;
begin
 AssignFile(f1,OpenDialog1.FileName);
 reset(f1);
 while not eof(f1) do
begin
read (f1,a);
buf1 :=chr (a);
read (f1,a);
buf2 := chr (a);
a1 := buf2 + buf1;
read (f1,a);
buf3 := chr (a);
read (f1,a);
buf4 := chr (a);
b1 := buf4 + buf3;
b:= ord(a1)+ord(b1);
end;
Memo1.Lines.Add(IntToStr(b));
closefile (f1);
end;
зделал так но выдает ошибку
0
murderer
3314 / 1461 / 133
Регистрация: 06.10.2010
Сообщений: 3,215
28.06.2011, 19:59 #4
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
var
  f: File of word;
  a,b:       word;
begin
  AssignFile(f,OpenDialog1.FileName);
  reset(f);
  while not eof(f) do
  begin
    read (f,a);
    read (f,b);
    Memo1.Lines.Add(IntToStr(swap(a)+swap(b)));
  end;
  closefile(f);
end.
1
AET
1 / 1 / 2
Регистрация: 27.04.2008
Сообщений: 64
28.06.2011, 21:00  [ТС] #5
Цитата Сообщение от murderer Посмотреть сообщение
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
var
  f: File of word;
  a,b:       word;
begin
  AssignFile(f,OpenDialog1.FileName);
  reset(f);
  while not eof(f) do
  begin
    read (f,a);
    read (f,b);
    Memo1.Lines.Add(IntToStr(swap(a)+swap(b)));
  end;
  closefile(f);
end.
блогодарен но мне надо их складывать не первые два баит а с 3 и 4 пример НЕХ значении 47 3C 24 5A переварачиваем первые 2 байта 3С 47 переворачиваем вторые 2 баита 5А 24 и их складываем 3С 47 + 5А 24 = 966В

Добавлено через 39 минут
мне нужен тип файла byte
0
Mawrat
12821 / 5729 / 1700
Регистрация: 19.09.2009
Сообщений: 8,807
28.06.2011, 22:21 #6
AET, подробней опиши - почему потребовалось менять байты местами? Действительно ли это обосновано? Дело в том, что целые числа в памяти компьютера расположены, как раз, "наоборот" - в младших адресах записаны младшие байты, в старших - старшие. При записи целых чисел в типизированный файл они записываются именно так, как они расположены в памяти - т. е., младшие байты в начале, старшие - в конце. И если эти числа читать из файла, то они записываются в переменные, как раз так, как нужно.
Возможно, файл содержит двухбайтные уникоды? И надо, например, UTF-16BE преобразовать в UTF-16LE (или наоборот)? - Тогда да, надо соседние байты менять местами.
---
В общем, опиши задачу подробнее.
1
AET
1 / 1 / 2
Регистрация: 27.04.2008
Сообщений: 64
29.06.2011, 08:03  [ТС] #7
задача набо считывать по 2 байта и их складывать со следуюшими 2 баитами и.т.д до конца файла в конце должно быть сумма НЕХ значени
Delphi
1
2
3
4
while not eof(f2) do
    begin
read(f2, buf1);
k := k + buf1;
вот примерно так но надо по 2 байта
0
MikkiMouse
19 / 19 / 5
Регистрация: 26.05.2011
Сообщений: 65
29.06.2011, 08:47 #8
Вот так решается твоя проблема
Delphi
1
res:= ((src and $FF) shl 8)+((src and $FF00) shr 8);
1
AET
1 / 1 / 2
Регистрация: 27.04.2008
Сообщений: 64
29.06.2011, 09:18  [ТС] #9
Delphi
1
2
3
4
5
6
7
8
9
  while not eof(f) do
  begin
    read (f,a);
    c:= ((a and $FF) shl 8)+((a and $FF00) shr 8);
    d := d + c;
    //Memo1.Lines.Add(IntToStr(c));
  end;
   Memo1.Lines.Add(IntToStr(d));
  closefile(f);
получается очень большое число как его урезать пример F5F5 + F3F3 = 1E9E8 надо оставить Е9Е8
0
MikkiMouse
19 / 19 / 5
Регистрация: 26.05.2011
Сообщений: 65
29.06.2011, 09:27 #10
А зачем понадобилось складывать все числа до конца файла? Ведь переполнение в этом случае неизбежно.
Чтобы урезать число, как вы говорили, могу предложить завести переменную типа DWORD (4 байта), скопировать в нее результат и выполнить операцию and $FFFF. В этом случае останутся только 2 байта, а ненужные "отбросятся"
1
AET
1 / 1 / 2
Регистрация: 27.04.2008
Сообщений: 64
29.06.2011, 10:55  [ТС] #11
надо считать checksumm 16
0
MikkiMouse
19 / 19 / 5
Регистрация: 26.05.2011
Сообщений: 65
29.06.2011, 11:30 #12
Вот наиболее эффективный алгоритм расчета контрольной суммы CRC16


Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
const
TCRCHi: array[Byte] of Byte = (
$00,$C1,$81,$40,$01,$C0,$80,$41,$01,$C0,$80,$41,$00,$C1,$81,$40,
$01,$C0,$80,$41,$00,$C1,$81,$40,$00,$C1,$81,$40,$01,$C0,$80,$41,
$01,$C0,$80,$41,$00,$C1,$81,$40,$00,$C1,$81,$40,$01,$C0,$80,$41,
$00,$C1,$81,$40,$01,$C0,$80,$41,$01,$C0,$80,$41,$00,$C1,$81,$40,
$01,$C0,$80,$41,$00,$C1,$81,$40,$00,$C1,$81,$40,$01,$C0,$80,$41,
$00,$C1,$81,$40,$01,$C0,$80,$41,$01,$C0,$80,$41,$00,$C1,$81,$40,
$00,$C1,$81,$40,$01,$C0,$80,$41,$01,$C0,$80,$41,$00,$C1,$81,$40,
$01,$C0,$80,$41,$00,$C1,$81,$40,$00,$C1,$81,$40,$01,$C0,$80,$41,
$01,$C0,$80,$41,$00,$C1,$81,$40,$00,$C1,$81,$40,$01,$C0,$80,$41,
$00,$C1,$81,$40,$01,$C0,$80,$41,$01,$C0,$80,$41,$00,$C1,$81,$40,
$00,$C1,$81,$40,$01,$C0,$80,$41,$01,$C0,$80,$41,$00,$C1,$81,$40,
$01,$C0,$80,$41,$00,$C1,$81,$40,$00,$C1,$81,$40,$01,$C0,$80,$41,
$00,$C1,$81,$40,$01,$C0,$80,$41,$01,$C0,$80,$41,$00,$C1,$81,$40,
$01,$C0,$80,$41,$00,$C1,$81,$40,$00,$C1,$81,$40,$01,$C0,$80,$41,
$01,$C0,$80,$41,$00,$C1,$81,$40,$00,$C1,$81,$40,$01,$C0,$80,$41,
$00,$C1,$81,$40,$01,$C0,$80,$41,$01,$C0,$80,$41,$00,$C1,$81,$40
);
 
TCRCLo: array[Byte] of Byte = (
$00,$C0,$C1,$01,$C3,$03,$02,$C2,$C6,$06,$07,$C7,$05,$C5,$C4,$04,
$CC,$0C,$0D,$CD,$0F,$CF,$CE,$0E,$0A,$CA,$CB,$0B,$C9,$09,$08,$C8,
$D8,$18,$19,$D9,$1B,$DB,$DA,$1A,$1E,$DE,$DF,$1F,$DD,$1D,$1C,$DC,
$14,$D4,$D5,$15,$D7,$17,$16,$D6,$D2,$12,$13,$D3,$11,$D1,$D0,$10,
$F0,$30,$31,$F1,$33,$F3,$F2,$32,$36,$F6,$F7,$37,$F5,$35,$34,$F4,
$3C,$FC,$FD,$3D,$FF,$3F,$3E,$FE,$FA,$3A,$3B,$FB,$39,$F9,$F8,$38,
$28,$E8,$E9,$29,$EB,$2B,$2A,$EA,$EE,$2E,$2F,$EF,$2D,$ED,$EC,$2C,
$E4,$24,$25,$E5,$27,$E7,$E6,$26,$22,$E2,$E3,$23,$E1,$21,$20,$E0,
$A0,$60,$61,$A1,$63,$A3,$A2,$62,$66,$A6,$A7,$67,$A5,$65,$64,$A4,
$6C,$AC,$AD,$6D,$AF,$6F,$6E,$AE,$AA,$6A,$6B,$AB,$69,$A9,$A8,$68,
$78,$B8,$B9,$79,$BB,$7B,$7A,$BA,$BE,$7E,$7F,$BF,$7D,$BD,$BC,$7C,
$B4,$74,$75,$B5,$77,$B7,$B6,$76,$72,$B2,$B3,$73,$B1,$71,$70,$B0,
$50,$90,$91,$51,$93,$53,$52,$92,$96,$56,$57,$97,$55,$95,$94,$54,
$9C,$5C,$5D,$9D,$5F,$9F,$9E,$5E,$5A,$9A,$9B,$5B,$99,$59,$58,$98,
$88,$48,$49,$89,$4B,$8B,$8A,$4A,$4E,$8E,$8F,$4F,$8D,$4D,$4C,$8C,
$44,$84,$85,$45,$87,$47,$46,$86,$82,$42,$43,$83,$41,$81,$80,$40
);
 
...
 
function CRC16(P: PChar; Len: Word): Word;
var CRCHi,CRCLo, Index: Byte; R: Word;
begin
CRCHi:=$FF;
CRCLo:=$FF;
while Len > 0 do begin
  Index := CRCHi xor Byte(P^);
  CRCHi := CRCLo xor TCRCHi[Index];
  CRCLo := TCRCLo[Index];
  Dec(Len);
  Inc(P);
end;
R := CRCLo;
R := R shl 8 + CRCHi;
Result := R;
end;
В качестве первого параметра используется строка, для которой нужно подсчитать CRC, а второй - длина этой строки. Т.е. если тебе надо посчитать CRC всего файла, сохраняешь весь текст в переменную Buffer, и вызываешь функцию
Pascal
1
crc := CRC16(PChar(Buffer),Length(Buffer));
0
AET
1 / 1 / 2
Регистрация: 27.04.2008
Сообщений: 64
29.06.2011, 11:41  [ТС] #13
а зачем 2 таблицы CRCHi,CRCLo
0
MikkiMouse
19 / 19 / 5
Регистрация: 26.05.2011
Сообщений: 65
29.06.2011, 12:03 #14
Для ускорения расчёта CRC используется табличный алгоритм. Его суть состоит в следующем: при выполнении операции XOR содержимого регистра с постоянной величиной при различных её сдвигах всегда будет существовать некоторое значение, которое при применении операции XOR с исходным содержимым регистра даст тот же самый результат. А значит, можно составить таблицу таких величин, где индексом является исходное содержимое регистра. Эта таблица позволяет значительно ускорить расчёт CRC заменой восьми операций сдвига одной операцией поиска по таблице.
Всего значений в таблице 256. Поэтому при ее расчёте выполняется цикл по 256 значениям (от 0 до 255).

вот ссылки по теме (правда на С)
http://www.piclist.ru/S-CRC16-RUS/CRC16.html
http://ru.wikipedia.org/wiki/Циклический_избыточный_код
0
AET
1 / 1 / 2
Регистрация: 27.04.2008
Сообщений: 64
29.06.2011, 14:17  [ТС] #15
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TForm1 = class(TForm)
    lbl1: TLabel;
    lbl2: TLabel;
    lbl3: TLabel;
    btn1: TButton;
    btn2: TButton;
    edt2: TEdit;
    edt3: TEdit;
    btn3: TButton;
    procedure btn2Click(Sender: TObject);
    procedure edt3KeyPress(Sender: TObject; var Key: Char);
    procedure btn1Click(Sender: TObject);
    procedure btn3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
type TBuffer = array of Byte;
 
var
  Form1: TForm1;
 
implementation
 
CONST crctab: ARRAY[0..255] OF WORD = (
    $0000, $C0C1, $C181, $0140, $C301, $03C0, $0280, $C241,
    $C601, $06C0, $0780, $C741, $0500, $C5C1, $C481, $0440,
    $CC01, $0CC0, $0D80, $CD41, $0F00, $CFC1, $CE81, $0E40,
    $0A00, $CAC1, $CB81, $0B40, $C901, $09C0, $0880, $C841,
    $D801, $18C0, $1980, $D941, $1B00, $DBC1, $DA81, $1A40,
    $1E00, $DEC1, $DF81, $1F40, $DD01, $1DC0, $1C80, $DC41,
    $1400, $D4C1, $D581, $1540, $D701, $17C0, $1680, $D641,
    $D201, $12C0, $1380, $D341, $1100, $D1C1, $D081, $1040,
    $F001, $30C0, $3180, $F141, $3300, $F3C1, $F281, $3240,
    $3600, $F6C1, $F781, $3740, $F501, $35C0, $3480, $F441,
    $3C00, $FCC1, $FD81, $3D40, $FF01, $3FC0, $3E80, $FE41,
    $FA01, $3AC0, $3B80, $FB41, $3900, $F9C1, $F881, $3840,
    $2800, $E8C1, $E981, $2940, $EB01, $2BC0, $2A80, $EA41,
    $EE01, $2EC0, $2F80, $EF41, $2D00, $EDC1, $EC81, $2C40,
    $E401, $24C0, $2580, $E541, $2700, $E7C1, $E681, $2640,
    $2200, $E2C1, $E381, $2340, $E101, $21C0, $2080, $E041,
    $A001, $60C0, $6180, $A141, $6300, $A3C1, $A281, $6240,
    $6600, $A6C1, $A781, $6740, $A501, $65C0, $6480, $A441,
    $6C00, $ACC1, $AD81, $6D40, $AF01, $6FC0, $6E80, $AE41,
    $AA01, $6AC0, $6B80, $AB41, $6900, $A9C1, $A881, $6840,
    $7800, $B8C1, $B981, $7940, $BB01, $7BC0, $7A80, $BA41,
    $BE01, $7EC0, $7F80, $BF41, $7D00, $BDC1, $BC81, $7C40,
    $B401, $74C0, $7580, $B541, $7700, $B7C1, $B681, $7640,
    $7200, $B2C1, $B381, $7340, $B101, $71C0, $7080, $B041,
    $5000, $90C1, $9181, $5140, $9301, $53C0, $5280, $9241,
    $9601, $56C0, $5780, $9741, $5500, $95C1, $9481, $5440,
    $9C01, $5CC0, $5D80, $9D41, $5F00, $9FC1, $9E81, $5E40,
    $5A00, $9AC1, $9B81, $5B40, $9901, $59C0, $5880, $9841,
    $8801, $48C0, $4980, $8941, $4B00, $8BC1, $8A81, $4A40,
    $4E00, $8EC1, $8F81, $4F40, $8D01, $4DC0, $4C80, $8C41,
    $4400, $84C1, $8581, $4540, $8701, $47C0, $4680, $8641,
    $8201, $42C0, $4380, $8341, $4100, $81C1, $8081, $4040 );
 
{$R *.dfm}
 
function crc16(twoSym:array of Word; size:Word):Word;
var
 i:Integer;
 crc:Word;
begin
  crc:=$FFFF;
 
  for i:=0 to ((size div 2)-1) do
  begin
    crc:=  (crc shr 8) xor CrcTab[(crc and $FF) xor twoSym[i]];
  end;
   Result:=(crc shr 8) or (crc shl 8);
end;
 
function StrToByte(p1:string):integer;
const hex:array['A'..'F'] of Word=(10,11,12,13,14,15);
var
 Int,i:Integer;
begin
   Int:=0;
       for i := 1 to Length(P1) do
        if P1[i] < 'A' then Int := Int * 16 + ORD(P1[i]) - 48
        else Int := Int * 16 + HEX[p1[i]];
   Result:=int;
end;
 
procedure TForm1.btn2Click(Sender: TObject);
begin
  Close;
end;
 
procedure TForm1.edt3KeyPress(Sender: TObject; var Key: Char);
begin
   if Key in [#8,'0'..'9','a'..'f','A'..'F'] then Key:=System.UpCase(Key) else
   begin
     ShowMessage('Недопустимый формат');
     Key:=#0;
   end;
end;
 
Procedure TForm1.btn1Click(Sender: TObject);
Var
  crc: Word;
  i,j: Integer;
  b: array[1..100] of Word;
Begin
  If edt3.text = '' Then
    ShowMessage('Поле данных пусто')
  Else
    Begin
      j:=1;
     for i := 1 to Length(edt3.Text) do
     begin
       b[i]:=StrToByte(edt3.Text[j]+edt3.Text[j+1]);
       j:=j+2;
     end;
     crc:= crc16(b, Length(edt3.Text));
     edt2.Text :=IntToHex(crc, 2);
    End;
End;
 
procedure TForm1.btn3Click(Sender: TObject);
var
  D:Word;
  i:Integer;
begin
  edt2.Clear;
 for i := 1 to Length(edt3.Text) do
 begin
 D:=StrToByte(edt3.Text[i]);
 edt2.Text:=edt2.Text+IntToHex(D,0);
 end;
end;
 
end.
вот насчел попробую переделать на файл

Добавлено через 2 часа 4 минуты
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
function CRC16(P: PChar; Len: Word): Word;
var CRCHi,CRCLo, Index: Byte; R: Word;
begin
CRCHi:=$FF;
CRCLo:=$FF;
while Len > 0 do begin
  Index := CRCHi xor Byte(P^);
  CRCHi := CRCLo xor TCRCHi[Index];
  CRCLo := TCRCLo[Index];
  Dec(Len);
  Inc(P);
end;
R := CRCLo;
R := R shl 8 + CRCHi;
Result := R;
end;
 
procedure TForm1.Button3Click(Sender: TObject);
var
crc: Word;
Buffer: TFileStream;
begin
  Buffer :=TFileStream.Create(OpenDialog1.FileName,fmOpenRead);
  crc := CRC16(PChar(Buffer),Length(Buffer));
  Buffer.Free;
  Memo1.Text :=IntToHex(crc, 2);
end;
почему выдает ошибку во здесь crc := CRC16(PChar(Buffer),Length(Buffer));
0
MikkiMouse
19 / 19 / 5
Регистрация: 26.05.2011
Сообщений: 65
29.06.2011, 15:17 #16
под переменной Buffer подразумевается строка string, а ты что используешь?
Если хочешь использовать TFileStream, попробуй так (правда сам не проверял)
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
procedure TForm1.Button3Click(Sender: TObject);
var
crc: Word; Buffer: String;
fs: TFileStream;
begin
  fs:=TFileStream.Create(OpenDialog1.FileName,fmOpenRead);
  SetLength(Buffer, fs.Size);
  fs.Read(Buffer[1], fs.Size);
  fs.Free;
  crc := CRC16(PChar(Buffer),Length(Buffer));
  Memo1.Text :=IntToHex(crc, 2);
end;
0
AET
1 / 1 / 2
Регистрация: 27.04.2008
Сообщений: 64
29.06.2011, 17:23  [ТС] #17
программа работает но вычисляет не правельно к примеру в фаиле НЕХ значения 24 4Е + 4В 46 = 6F 94 а программа выдает другое C785
вот насчел на РНР
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
for ($i=0;$i<($razm_nkf-2);$i++)
{
$b = $checksumm{$i}; 
$i++;
$c = $checksumm{$i}; 
$p = (ord($b) << 8); 
$p = $p & 0xff00; 
$e = ord($c); 
$e = $e & 0x00ff;
$w = ($p + $e );
$crc = ($crc + $w);
}
$xx = 0;
for($ss=0; $ss < 65535; $ss++){
 $xx = ($crc+$ss)&0xffff;
 if ($xx == 42405){
 echo "<p> Checksums16 found : <font color=green> $ss dec </font>"; 
 $vv = $ss;
 }
}
помагите его преобразавать в делфи
0
murderer
3314 / 1461 / 133
Регистрация: 06.10.2010
Сообщений: 3,215
29.06.2011, 19:22 #18
блогодарен но мне надо их складывать не первые два баит а с 3 и 4 пример НЕХ значении 47 3C 24 5A переварачиваем первые 2 байта 3С 47 переворачиваем вторые 2 баита 5А 24 и их складываем 3С 47 + 5А 24 = 966В
Функция swap с 2 байтным операндом как раз делает то, что тебе надо.
Delphi
1
2
3
read(f,a);          //считывем 473C
read(f,b);          //считываем 245A
c:=swap(a)+swap(b); //c:=3С47+5А24
0
AET
1 / 1 / 2
Регистрация: 27.04.2008
Сообщений: 64
29.06.2011, 20:44  [ТС] #19
все зделал всем огромное спосиба:dance3:
0
29.06.2011, 20:44
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.06.2011, 20:44
Привет! Вот еще темы с решениями:

Функция: изменить старший байт числа на заданное значение, не изменяя младший байт
функция изменяет старший байт числа на заданное значение не изменяя младший...

Удалить из каждого байта строки первый (старший) бит.
Здравствуйте. Суть задачи в общем-то и отображена в названии задачи. Есть...

Считать старший байт числа
Добрый день подскажите пожалуйста! Как в переменную записать число 3 числа...

Поместить 2 байта в стэк vs jmp в 8 байт
Доброго дня, друзья) Прошу вашей помощи в решении очередной задачи. Я недавно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru