Jak převést ascii cód znaku v usint na string ?

(1/2) > >>

Jiri Dvorak:
Mám pole usintu ve kterém mám číselne kódy znaků a potřebuji je převést na string.
Jediné řešené na které jsem přišel je vytvořit pointer to string a do nej vložit počáteční  adresu,
....
VAR
   RxData : array[0..5] of usint := [84,101,115,116,0];
   PntStr : ptr_to string;
   Str : String[4];

  END_VAR


  PntStr := adr(RxData[0]);
  Str := PntStr^;

což funguje ... ale ..

Pavel Sovička:
Programovací jazyk v příkladu vypadá jako strukturovaný text. Podle konkrétního prostředí (já znám Codesys 2) by mohly být k dispozici konverzní funkce. V nápovědě prostředí bych tedy zkusil pohledat "Type conversion",  měla by to být samostatná kategorie funkcí a někde v ní by mohla být funkce "uint_to_string()",  která toto korektně řeší. Popř. by mohla být k dispozici "int_to_string()" a jelikož rozsah "usint" je jen podmnožinou "int" tak by to stále mělo fungovat správně.

Jiri Dvorak:
int_to_string k dispozici je, ale ten proste vem cislo trabas 97 a z int udela string se znaky 97
ja potebuju dle ascii prevest "97" na "a"
a ano je to ST-cko

Jakub Steklý:
možná trochu zaostale, ale jestli je potřebovat převádět pouze několik písmen/čísel tak je možná rychlejší si napsat dekodér...

Kdysi jsem si ho takhle psal na dekódování znaků ASCII ze stringu, ale pouze čísla, kterých je méně  ;)

Jiri Dvorak:
od externi zařízení mi příjde toto:
Cmd#12#Heslo#12.1#12.3#12.4;
a to potřebuji rozbrourat na:
 TOutCmdPrs : struct
            Cmd : string[10]; 
            Id  : usint;       
            Pswd : string[10]; 
            RValues : array[0..CTOutCmdPrs_NmVl] of real;
 end_struct;

ale v podstatě, vyřešeno, použil jsem tu vopičárnu s tím poiterem ....

Navigace

[0] Index zpráv

[#] Další strana