TIA Array of Byte > String ab v14

Step7Neuling

Level-2
Beiträge
258
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo alle zusammen,

ich bin noch am verzweifeln, ich möchte gerne eine Array of Byte Variable in eine String Var. konvertieren.
Leider stehe ich immer vor dem Problem, das es entweder nicht richtig angezeigt wird...oder es einfach
nicht angezeigt wird.

Habe verschiedene Dinge schon getestet....auch die DB´s Adressbasierend geändert...aber auch da....
hat es nie so richtig geklappt...dann habe ich was gefunden mit einem FieldRead(Write) baustein,
aber auch der funktioniert leider nicht mehr, oder wird von der CPU nicht unterstütz...

Habt ihr eine Idee für mich ?

Es kann doch eigentlich nicht so schwer sein....

Vielen Dank für euren Support
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also CPU habe ich eine 1500er F
Zur Programmierung bin ich eigentlich wieder am Anfang...
ich habe auch dort nur Standards getestet....wie ganz Simple mit einem MOVE...
Den Fieldread habe ich schon wieder verwurfen, weil der von der CPU nicht akzeptiert wird.

Wie gesagt letzendlich will ich nur ein Array of Byte in einen String wandeln...

z.B.

Test Array of Byte [0..3] > Ergebnis STRING

Test 0 = 16#39
Test 1 = 16#2F
Test 2 = 16#21
Test 3 = 16#09


Ergebnis = '5747339'
 
jetzt stehe ich auf dem Schlauch...

das eine ist ein String und das andere ist ein Byte....

gut aufgelöst wäre es ... BYTE (HEX) > DEC > String
 
ja das habe ich auch gemacht, aber da kommt dann kein vernünftiger Wert am Ende raus...
leider...

Mit AWL kenne ich mich leider nicht so aus....ich denke damit würde es vielleicht einfach funktionieren...

Aber auch mit KOP und FUP muss es doch eine schöne Lösung geben....manchmal denkt man vielleicht
auch zu kompliziert...
 
Versuch mal dein Testarray von Hand zu rechnen (z.B. Calc "Programmierer)

Denn: 5747339dez sind 57B28B...
Ascii ist es auch nicht, 16#39 wäre '9' ; 16#2F wäre '/' ... ist also keine Zahl...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Was stellt die Bytefolge 16#39,16#2F,16#21,16#09 dar? Wo kommt die Bytefolge her? Was soll da als String herauskommen? Anscheinend ist das gar keine Zeichenfolge, die man einfach in einen String übernehmen kann. Ist das vielleicht ein (U)DINT oder ein REAL?
Chars_TO_Strg --> '9/!<TAB>'
(U)DINT --> '959389961'
REAL --> 0.000167016070918

Harald
 
Dein Problem ist anscheinend, daß Du aus 4 Zahlen eine große Zahl formen willst, die als String angezeigt wird, richtig?
In dem Moment, wo Du Byte in String konvertierst, wird das Byte als ASCII-Code interpretiert.

Sollte mein Verständnis Deiner Problemstellung korrekt sein, mußt Du Byte -> INT -> STRING machen, und das 4 Mal. Und die 4 Ergebnis-String kannst Du mit CONCAT aneinanderhängen zu einem großen String.
 
z.B.

Test Array of Byte [0..3] > Ergebnis STRING

Test 0 = 16#39
Test 1 = 16#2F
Test 2 = 16#21
Test 3 = 16#09


Ergebnis = '5747339'
Ist das '5747339' ein falsches Ergebnis oder ist das das Ergebnis was rauskommen soll und Du weißt nicht wie?
Falls das das richtige Soll-Ergebnis ist, dann müsstest Du jedes Byte für sich als Dezimalzahl interpretiert in einen String umwandeln (z.B. in einen INT kopieren und dann INT_TO_STRING/S_CONV/VAL_STRG) und dann die Strings aneinanderhängen (CONCAT).
Wer denkt sich so eine Codierung aus? Die Bytefolgen 16#39,16#2F,16#21,16#09 und z.B. 16#39,16#2F,16#03,16#27 würden beide das Ergebnis '5747339' liefern.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Sorry aber wie soll das zusammen passen?
Byte2String.jpg
Passt doch super, aber was soll das? ;)

... ist also keine Zahl...
Es war auch nicht die Rede davon, dass es eine Zahl sein soll.

Sollte mein Verständnis Deiner Problemstellung korrekt sein, mußt Du Byte -> INT -> STRING machen, und das 4 Mal. Und die 4 Ergebnis-String kannst Du mit CONCAT aneinanderhängen zu einem großen String.

Das scheint doch genau das Verfahren zu sein, das zu dem gezeigten Ergebnis führen würde.
Aber, ob der ZwischenSchritt INT2STRING überhaupt beabsichtigt/gewünscht ist?

Bitte ganz klar sagen und eindeutig auseinanderhalten: welches ist der SollZustand und welches ist der IstZustand!?
 
'5747339' macht meiner Meinung nach keinen Sinn, wenn schon, dann'57473309'

Woher soll man sonst anhand des Strings wissen, an welcher Stelle die einstellige Zahl sein soll?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn zweistellig das Maß aller Dinge wäre, warum dann nicht einfach bei der HexadezimalDarstellung bleiben?
Habe ich auch gedacht. Warum so eine umständliche Konvertierung, wenn BCD oder direkt hexadezimal viel einfacher und eindeutiger wäre.

@Step7Neuling
Wie schon mehrfach gefragt: Welcher String soll bei der genannten Bytefolge rauskommen?

Harald
 
Zurück
Oben