Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / помогите перевести на Builder С++ / 6 сообщений из 6, страница 1 из 1
23.12.2019, 14:33
    #39907041
Mizer73
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите перевести на Builder С++
Код: 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.
const srCRCHi:array[0..255] of byte = (
0x00, $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);
srCRCLo:array[0..255] 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);
const InitCRC:word = $FFFF;

function UpdCRC(C : byte;oldCRC : word) : word;
{
	var i: byte;
	arrCRC: array [0..1] of byte absolute oldCRC;
	begin
	i:= arrCRC[1] xor C;
	arrCRC[1]:= arrCRC[0] xor srCRCHi[i];
	arrCRC[0]:= srCRCLo[i];
	UpdCRC:=oldCRC;
	end;
}
// Пусть BufSend содержит подготовленный для посылки пакет длиной LengthSend байт
Crc := UpdCRC(BufSend[0], InitCRC);
For I := 1 to LengthSend-1 do Crc := UpdCRC(BufSend[I], Crc);
BufSend[LengthSend] := Crc div 256;
BufSend[LengthSend + 1] := Crc mod 256;
...
Рейтинг: 0 / 0
23.12.2019, 17:01
    #39907150
Квейд
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите перевести на Builder С++
Как пробовал? Что не получилось?
...
Рейтинг: 0 / 0
23.12.2019, 17:29
    #39907176
Mizer73
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите перевести на Builder С++
Квейд,

не понимаю
arrCRC: array [0..1] of byte absolute oldCRC;
...
Рейтинг: 0 / 0
23.12.2019, 17:44
    #39907190
ziv-2014
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите перевести на Builder С++
Mizer73
Квейд,

не понимаю
arrCRC: array [0..1] of byte absolute oldCRC;

arrCRC=oldCRC - только другого типа array [0..1] of byte
...
Рейтинг: 0 / 0
23.12.2019, 17:51
    #39907194
Mizer73
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите перевести на Builder С++
ziv-2014,

не понимаю
...
Рейтинг: 0 / 0
23.12.2019, 18:46
    #39907223
Polesov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите перевести на Builder С++
Mizer73

не понимаю
arrCRC: array [0..1] of byte absolute oldCRC;

Абсолютная переменная - это просто другая интерпретация одной и той-же области памяти.
В данном случае oldCRC - входной параметр и имеет тип word (16-битное беззнаковое)
arrCRC интерпретирует область памяти, в которой находится параметр oldCRC, как массив
из 2-х байт для возможности получить старшие и младшие 8 бит параметра oldCRC.

P.S. В принципе, вместо absolute можно было воспользоваться LoByte() и HiByte().
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / помогите перевести на Builder С++ / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]