[SP-pm] Dúvidas sobre a Representação de Dados [Was: Do Delphi para Perl - Array ...]

claudio at dpreferencial.com.br claudio at dpreferencial.com.br
Sat Jul 11 07:24:44 PDT 2009


Luiz, Bom dia!

Desculpe a demora no retorno.



Vou responder as msg na ordem de chegada..
_____________________

Veja fiz um exemplo deste processo.. achei + fácil de explicar..

Arq Html com result do teste:
http://189.19.221.210/LendRec/LendoRec.html

Arq PL:

http://189.19.221.210/LendRec/LendoRec.pl


Arq. .DEF
http://189.19.221.210/LendRec/2009.def

Arq .V1
http://189.19.221.210/LendRec/2009.v1

______________________

Na verdade o conteúdo dos campos (no exemplo abaixo) ficam assim:      > 
2,1/5/8,2,1/2/3,5292.32  a visgula é o separador de campo e a barra é o 
separador de conteúdo.

A == "2"               (tamanho  2 bits) campo de código
B == "1,5,8"         (tamanho 10 bits)  campo de código
C == "1,2,3"        (tamanho  5 bits)     campo de código
D == "3"               (tamanho  3 bits)     campo de código
E == "5292.32"    (tamanho 48 bits)   -- campo real48
                                                  ------------------------
 tamanho total                                             68 bit's.

os campos de código podem ter todos os seus bit's true, exemplo campo B tem 
tamanho 10, pode ter um conteúdo assim: 1/2/3/4/5/6/7/8/9/10..
______________________
2º- Quanto ao bit/byte..

troquei bit por byte...rsrs..
______________________
3º
Para as comparações entre bytes eu uso bitwise ShifLeft
______________________

Obs: Só me explicando...

Antes de carregar o arquivo de dados .. (acima)
carrego um arquivo de definição que contem dois arrays.. um com o tipo de 
cada campo e outro com o tamanho dos campos.
Com isso vezes 8, tenho o tamanho total (em Bytes) da record a ser lida,
faço um array com as posições iniciais de cada campo e saiu tranformando o 
array em códigos ou números...

_______________________

vamos nos falando,

Abs





----- Original Message ----- 
From: "Luis Motta Campos" <luismottacampos at yahoo.co.uk>
To: <saopaulo-pm at mail.pm.org>
Sent: Friday, July 10, 2009 9:16 PM
Subject: [SP-pm] Dúvidas sobre a Representação de Dados [Was: Do Delphi para 
Perl - Array ...]


Claudio wrote:
> É na verdade simplificaria , mas ...
> ___________________________________________
>
> Esqueci de comentar ..meus campos tem dois fomatos básicos.
> 1 - é o código que pod ir de 1...99999. o usuário defini.
> 2 - é numérico: Real, Int e word..
> estes quatro tipos eu transformo no array boolean...
> ___________________________________________
>
> Veja um  comparativo:
>
> uma única record com 05 campos, sendo:
> 1 - campoA Boolean  02 códigos - tamanho 02 byts
> 2 - campoB Boolean  10 códigos - tamanho 10 byts
> 3 - campoC Boolean  05 códigos - tamanho 05 byts
> 4 - campoD Boolean  03 códigos - tamanho 03 byts
> 5 - campoE Real       --               - tamanho 48 byts
>                                                  ------------------------
> tamanho total                                             68 byts..
>
> Conteudo da record.
> A,B,C,D,E
> 2,1/5/8,2,1/2/3,5292.32
>
> Veja:                      tamanho do arquivo ficou em:
> - no meu formato    9 bytes.
> - no txt                  23 bytes.      2,1/5/8,2,1/2/3,5292.32
> - no txt                  68
> bytes. 
> 01100010010001000111101100011001010000111010111100010100011010100100
>
> vamos nos falando,

Cláudio,

Eu li e reli o seu email diversas vezes, mas não consegui compreender
como os dados apresentados (que eu reproduzo abaixo) podem se encaixar
nos tamanhos de campos que você tem.

A == "2,1"       (tamanho  2 bits)
B == "5"         (tamanho 10 bits)  --- para baixo ficou Errado
C == "8,2,1"     (tamanho  5 bits)  -- o corrreto ~e
D == "2"         (tamanho  3 bits)
E == "3,5292.32" (tamanho 48 bits)

Eu honestamente não sei como interpretar o campo "E", por exemplo:
aquilo é supostamente um número, ou é uma lista que contém um inteiro e
um número de ponto flutuante sem sinal no padrão IEEE 754?

Também não fica claro, a partir dos seus exemplos de formato, se você
usa a convenção /little endian/ ou /big endian/ para os seus dados em
formato binário.

Finalmente, não consigo compreender como é que tanto o número de ponto
flutuante "2.1" ou a lista de inteiros "2, 1" pode caber em apenas 2
bits. Ou eu estou errado, "byt" era para ser "byte" (8 bits) e o campo
"E" tem o tamanho incorreto?

Agradeço com antecedência pelas explicações.

Putamplexos.
-- 
Luis Motta Campos is a software engineer,
Perl Programmer, foodie and photographer.

_______________________________________________
SaoPaulo-pm mailing list
SaoPaulo-pm at pm.org
http://mail.pm.org/mailman/listinfo/saopaulo-pm



More information about the SaoPaulo-pm mailing list