ST(结构文本)将数据从十六进制传输到十进制

时间:2017-05-16 14:28:58

标签: encryption hex decimal plc st

我需要将数据从十六进制传输到十进制。数据我得到一个字符串。有人可以帮忙吗? ST是否有可能成功?

感谢。

2 个答案:

答案 0 :(得分:1)

    Dec_data:= 'ABCD';
    pVar := &iIntVar;
    usiRes:= STR_TO_BIN(Dec_data, pVar, 'X');
    strResult := BIN_TO_STR(pVar,'d');

结果是STRING' 43981'

答案 1 :(得分:0)

data:= "005BE045";
    j := 7.0;
    result :=0.0;
    FOR i:=1 TO 8 BY 1 DO
            data2 := MID(data,L:=1,P:=i);
            IF(data2 = '0') THEN
                count := 0.0*(16.0**j);
            ELSIF(data2 = '1') THEN
                count := 1.0*(16.0**j);
            ELSIF(data2 = '2') THEN
                count := 2.0*(16.0**j);             
            ELSIF(data2 = '3') THEN
                count := 3.0*(16.0**j); 
            ELSIF(data2 = '4') THEN
                count := 4.0*(16.0**j); 
            ELSIF(data2 = '5') THEN
                count := 5.0*(16.0**j);
            ELSIF(data2 = '6') THEN
                count := 6.0*(16.0**j);
            ELSIF(data2 = '7') THEN
                count := 7.0*(16.0**j);
            ELSIF(data2 = '8') THEN
                count := 8.0*(16.0**j);
            ELSIF(data2 = '9') THEN
                count := 9.0*(16.0**j);
            ELSIF(data2 = 'A') THEN
                count := 10.0*(16.0**j);
            ELSIF(data2 = 'B') THEN
                count := 11.0*(16.0**j);
            ELSIF(data2 = 'C') THEN
                count := 12.0*(16.0**j);
            ELSIF(data2 = 'D') THEN
                count := 13.0*(16.0**j);
            ELSIF(data2 = 'E') THEN
                count := 14.0*(16.0**j);
            ELSIF(data2 = 'F') THEN
                count := 15.0*(16.0**j);
            END_IF;
            j := j-1.0;
            result:= result + count;
    END_FOR;
    astrDisplayText_20x4[4] := STR(result);

只有这样...我做的新功能,这是有效的!你觉得怎么样?