2

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

谢谢。

4

2 回答 2

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

结果是 STRING '43981'

于 2017-05-22T08:22:06.557 回答
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);

只有这样......我制作的新功能,这是可行的!你怎么看?

于 2017-05-17T08:54:57.040 回答