繁体   English   中英

如何在SAS中将HEXADECIMAL转换为DECIMAL?

[英]How do I convert HEXADECIMAL to DECIMAL in SAS?

我有:每四个位置带有十六进制值的字符串

00F701C101C900EC01E001D2

我需要:

将这些值从4个位置的4个位置分开,并以这种方式转换为十进制数字:

247、449、457、480、466

我的栏最多可以有1200个十六进制位置

你能帮助我吗?

谢谢!

这有效:

data out;
    hex = "00F701C101C900EC01E001D2";
    do while(hex ne "");
        valHex = substr(hex, 1, 4);
        hex = substr(hex, 5);
        valDec = input(valHex, hex4.);
        output;
    end;
run;

但您需要为您的实际解决方案添加更多错误检查等。

抱歉,我过得很快。 这是SQL-Server语法,可能对您不起作用,但是您可能会有所了解...

像这样尝试:

DECLARE @YourString VARCHAR(100)='00F701C101C900EC01E001D2';
WITH Separated AS
(
    SELECT CAST(LEFT(@YourString,4) AS VARCHAR(MAX)) AS SourceString
          ,CAST(SUBSTRING(@YourString,5,10000) AS VARCHAR(MAX)) AS RestString
    UNION ALL
    SELECT LEFT(RestString,4) 
          ,SUBSTRING(RestString,5,10000)
    FROM Separated
    WHERE LEN(RestString)>=4
)
SELECT *
      ,CAST(sys.fn_cdc_hexstrtobin(SourceString) AS VARBINARY(2))
      ,CAST(CAST(sys.fn_cdc_hexstrtobin(SourceString) AS VARBINARY(2)) AS INT)
FROM Separated

结果

+--------------+----------------------+--------------------+--------------------+
| SourceString | RestString           | (Kein Spaltenname) | (Kein Spaltenname) |
+--------------+----------------------+--------------------+--------------------+
| 00F7         | 01C101C900EC01E001D2 | 0x00F7             | 247                |
+--------------+----------------------+--------------------+--------------------+
| 01C1         | 01C900EC01E001D2     | 0x01C1             | 449                |
+--------------+----------------------+--------------------+--------------------+
| 01C9         | 00EC01E001D2         | 0x01C9             | 457                |
+--------------+----------------------+--------------------+--------------------+
| 00EC         | 01E001D2             | 0x00EC             | 236                |
+--------------+----------------------+--------------------+--------------------+
| 01E0         | 01D2                 | 0x01E0             | 480                |
+--------------+----------------------+--------------------+--------------------+
| 01D2         |                      | 0x01D2             | 466                |
+--------------+----------------------+--------------------+--------------------+

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM