Announcement

Collapse
No announcement yet.

Binäre Daten in Werte umwandeln

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Binäre Daten in Werte umwandeln

    Hallo Leute,

    folgendes Problem stellt sich mir als Delphi-Anfänger:
    Aus einem Messgerät lese ich einen String aus der einen Header und
    die entsprechnenden Daten besitzt. Das Datenformat ist Integer 32Bit,
    und es sind 401 Messwerte.
    Der String sieht folgendermaßen aus:
    '#41604’’Ģ©’’–O’’'#$12'^’’'#$1B'Ņ’’'#$17'½’’'#$18' ƒ’’'#$10'ū’’'#$14'¬’’'#$15'Ł’’Č’’'#$15'{’’'#$14'ģ’ ’'#$19'=’’'#$17'*’’'#$19'’’'#$17'u’’'#$19'`’’'#$1 2'e’’'#$15'Ų’’'#$16'*’’'#$17'®’’'#$15'ś’’’’'#$1B' ˜’’'#$1A'ė’’'#$10'ƒ’’'#$14'X’’'#$16'B’’'#$18#6'’’' #$1A'J’’ų’’š’’ė’’'#$19'’’'#$1C'!’’'#$18'·’’'#$14' ó’’'#$17'ģ’’'#$19'`’’'#$15#$D'’’'#$1C'ˆ’’+’’'#$18' ·’’'#$18#$B'’’'#$1C'W’’'#$1E'Ó’’'#$C'’’'#$1B'm’’'# $19'·’’'#$17'Ų’’'#$17',’’'#$17'é’’'#$19'Ę’’'#$19'ō ’’'#$1B'U’’'#$16'ˆ’’'#$1D'½’’'#$15'Ø’’'#$19'‰’’'#$ 1B''’’'#$1B'Ų’’'#$16'6’’'#$16'#’’'#$19'°’’'#$18'ę’ ’'#$19'^’’'#$1A'q’’'#$14'ž’’'#$18'ļ’’'#$16'Ł’’G’’' #$1C'.’’'#$1B'9’’'#$18'Č’’'#$1E'3’’'#$18'Ś’’'#$1D# 2'’’'#$1D''’’'#$18'ė’’'#$1F'M’’'#$1E'9’’ ;’’'#$1F'C’’!¬’’G’’'#$1C'’’'#$19'’’'#$1D'M’’'#$1 8'~’’'#$1F#$1F'’’!€’’'#$17'4’’'#$15'É’’'#$17'š’’'# $1A'\’’'#$1D')’’'#$1B#9'’’'#$17'Ń’’'#$1C'“’’'#$19' Ÿ’’ 0’’#@’’'#$19'M’’'#$1A'¬’’ ]’’'#$1A'č’’'#$1D'¬’’'#$1B'T’’'#$19'd’’'#$1E'³’’'#$ 19'„’’'#$19'4’’'#$1A'X’’'#$1F'!’’'#$17'”’’'#$1F'h’ ’'#$17'q’’'#$1A'T’’'#$1B':’’'#$1D'™’’'#$15'(’’'#$1 8'¢’’#'#$C'’’'#$19'ź’’'#$1E'–’’'#$1D'ü’’$'#$A'’’'# $1D'G’’'#$18'Q’’'#$1A'ź’’'#$18'‘’’'#$1C'E’’L’’'#$1 E',’’'#$1F'/’’'#$1C'œ’’'#$1C'd’’'#$1A'ģ’’'#$19'Ū’’!{’’'#$15'F’ ’#>’’'#$17'‚’’'#$1C'c’’'#$18'”’’'#$1B'’’'#$16#$18 '’’ė’’'#$18'u’’'#$1F'‡’’'#$1F'Ņ’’'#$1A'ü’’'#$1D'r’ ’'#$18#$16'’’'#$1A'Ķ’’'#$1A'’’'#$17'†’’'#$18'S’’' #$19#9'’’'#$17'Ó’’'#$16'ų’’'#$15'g’’'#$15'>’’1’’'# $14'Ņ’’'#$1B'č’’'#$1A'.’’'#$1A'Õ’’'#$18'±’’'#$1F'Ā ’’'#$14'S’’'#$18'Ø’’'#$1B'½’’'#$1E'ń’’ d’’'#$1A']’’‹’’'#$1C#$12'’’'#$1D'Æ’’'#$19'é’’'#$1B'¶’’'#$1D# $15'’’'#$15'’’'#$1D'q’’'#$19'G’’ C’’'#$19'|’’'#$17#$1C'’’'#$1B'$’’'#$1D'Ł’’!I’’'#$1 F'8’’'#$1A'Q’’'#$19'*’’'#$16''’’'#$17'Ó’’'#$1B#8'’ ’!×’’'#$1C'÷’’'#$14'ā’’"·’’'#$1B#$19'’’'#$1C'ī’’$$ ’’'#$1D'k’’'#$17'Z’’'#$1B'˜’’'#$1D'…’’'#$1A#$18'’’ '#$1C'+’’'#$1C'¦’’'#$1C'™’’'#$18'W’’'#$18'Ń’’'#$1F '[’’'#$1D'¼’’$ž’’'#$15'ƒ’’!h’’'#$1E'³’’'#$1B'ģ’’'#$1 F'S’’'#$1B'Ń’’ €’’'#$1F#$B'’’'#$17'v’’'#$1C'³’’'#$16'ā’’'#$1B'\’’ '#$1F'&’’'#$1B'L’’'#$19'Ź’’'#$17#$16'’’'#$1B'Ų’’'# $19'ŗ’’'#$1C'¾’’'#$1F'#’’$!’’'#$19'H’’'#$1D'ń’’'#$ 18'®’’'#$1C'śrdwert: '#41604’’Ģ©’’–O’’'#$12'^’’'#$1B'Ņ’’'#$17'½’’'#$18' ƒ’’'#$10'ū’’'#$14'¬’’'#$15'Ł’’Č’’'#$15'{’’'#$14'ģ’ ’'#$19'=’’'#$17'*’’'#$19'’’'#$17'u’’'#$19'`’’'#$1 2'e’’'#$15'Ų’’'#$16'*’’'#$17'®’’'#$15'ś’’’’'#$1B' ˜’’'#$1A'ė’’'#$10'ƒ’’'#$14'X’’'#$16'B’’'#$18#6'’’' #$1A'J’’ų’’š’’ė’’'#$19'’’'#$1C'!’’'#$18'·’’'#$14' ó’’'#$17'ģ’’'#$19'`’’'#$15#$D'’’'#$1C'ˆ’’+’’'#$18' ·’’'#$18#$B'’’'#$1C'W’’'#$1E'Ó’’'#$C'’’'#$1B'm’’'# $19'·’’'#$17'Ų’’'#$17',’’'#$17'é’’'#$19'Ę’’'#$19'ō ’’'#$1B'U’’'#$16'ˆ’’'#$1D'½’’'#$15'Ø’’'#$19'‰’’'#$ 1B''’’'#$1B'Ų’’'#$16'6’’'#$16'#’’'#$19'°’’'#$18'ę’ ’'#$19'^’’'#$1A'q’’'#$14'ž’’'#$18'ļ’’'#$16'Ł’’G’’' #$1C'.’’'#$1B'9’’'#$18'Č’’'#$1E'3’’'#$18'Ś’’'#$1D# 2'’’'#$1D''’’'#$18'ė’’'#$1F'M’’'#$1E'9’’ ;’’'#$1F'C’’!¬’’G’’'#$1C'’’'#$19'’’'#$1D'M’’'#$1 8'~’’'#$1F#$1F'’’!€’’'#$17'4’’'#$15'É’’'#$17'š’’'# $1A'\’’'#$1D')’’'#$1B#9'’’'#$17'Ń’’'#$1C'“’’'#$19' Ÿ’’ 0’’#@’’'#$19'M’’'#$1A'¬’’ ]’’'#$1A'č’’'#$1D'¬’’'#$1B'T’’'#$19'd’’'#$1E'³’’'#$ 19'„’’'#$19'4’’'#$1A'X’’'#$1F'!’’'#$17'”’’'#$1F'h’ ’'#$17'q’’'#$1A'T’’'#$1B':’’'#$1D'™’’'#$15'(’’'#$1 8'¢’’#'#$C'’’'#$19'ź’’'#$1E'–’’'#$1D'ü’’$'#$A'’’'# $1D'G’’'#$18'Q’’'#$1A'ź’’'#$18'‘’’'#$1C'E’’L’’'#$1 E',’’'#$1F'/’’'#$1C'œ’’'#$1C'd’’'#$1A'ģ’’'#$19'Ū’’!{’’'#$15'F’ ’#>’’'#$17'‚’’'#$1C'c’’'#$18'”’’'#$1B'’’'#$16#$18 '’’ė’’'#$18'u’’'#$1F'‡’’'#$1F'Ņ’’'#$1A'ü’’'#$1D'r’ ’'#$18#$16'’’'#$1A'Ķ’’'#$1A'’’'#$17'†’’'#$18'S’’' #$19#9'’’'#$17'Ó’’'#$16'ų’’'#$15'g’’'#$15'>’’1’’'# $14'Ņ’’'#$1B'č’’'#$1A'.’’'#$1A'Õ’’'#$18'±’’'#$1F'Ā ’’'#$14'S’’'#$18'Ø’’'#$1B'½’’'#$1E'ń’’ d’’'#$1A']’’‹’’'#$1C#$12'’’'#$1D'Æ’’'#$19'é’’'#$1B'¶’’'#$1D# $15'’’'#$15'’’'#$1D'q’’'#$19'G’’ C’’'#$19'|’’'#$17#$1C'’’'#$1B'$’’'#$1D'Ł’’!I’’'#$1 F'8’’'#$1A'Q’’'#$19'*’’'#$16''’’'#$17'Ó’’'#$1B#8'’ ’

  • #2
    Leider fehlt oben der Rest meiner frage.

    #41604 => müsste der Header sein.
    4=> die Anzahl der benutzen Bytes (32Bit), und 1604 müssten
    die 401 Messwerte * 4 Byte sein.

    Vielen Dank im vorraus für Eure Hilfe.

    Gruß Walte

    Comment


    • #3
      Hallo Walter,

      zum Anfang würde ich mit ein paar weniger Messwerten anfangen, sofern das möglich ist. So könntest Du dann erst mal ein wenig herumexperimentieren...

      Wenn nach dem Header die eigentlichen Meßwerte kommen, musst Du
      diesen String immer in 4 Bytes auslesen, z.B.

      <code><pre>
      <font face="Courier New"><b>var</b> x,i:integer; wert:<b>string</b>;
      i:=1;
      x:=1;
      <b>while</b> i &lt;= 1604 <b>do</b>
      <b>begin</b>
      <b>if</b> x&lt;=4 <b>then</b>
      <b>begin</b>
      wert:=wert+s[i];
      inc(x);
      <b>end</b>;
      <b>if</b> x=4 <b>then</b>
      <b>begin</b>
      Proc_MachWasMitDemWert(wert);
      wert:=<font color="#FF0000">''</font>;
      x:=1;
      <b>end</b>;
      inc(i);
      <b>end</b>;</font>
      </pre></code>

      In der Procedure "Proc_MachWasMitDemWert(wert)" würde die weitere
      Bearbeitung des Messwertes stattfinden, z.B. Umwandlung in Integerwert und Speicherung in Datenbank.

      Hoffe es hilft weiter

      Michael

      PS: obiges ist nur ein <b>Ansatz</b> und nicht geteste

      Comment


      • #4
        Hallo Michael,

        vielen Dank für deinen Tip, ich hab diesen in abgwandelter Form
        benutz. Und?

        Es Funktioniert!

        Danke Walte

        Comment

        Working...
        X