You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Progress 4GL中开发十六进制与二进制互转计算器

用Progress 4GL实现十六进制与二进制双向转换

完全可以实现这个功能,以下是核心的转换函数实现,包含输入验证和双向转换逻辑:

十六进制转二进制函数

FUNCTION hexToBin RETURNS CHARACTER (inputHex AS CHARACTER):
    DEF VAR binStr AS CHARACTER NO-UNDO.
    DEF VAR i AS INTEGER NO-UNDO.
    DEF VAR hexChar AS CHARACTER NO-UNDO.

    inputHex = UPPER(inputHex).
    DO i = 1 TO LENGTH(inputHex):
        hexChar = SUBSTRING(inputHex, i, 1).
        CASE hexChar:
            WHEN "0" THEN binStr = binStr + "0000".
            WHEN "1" THEN binStr = binStr + "0001".
            WHEN "2" THEN binStr = binStr + "0010".
            WHEN "3" THEN binStr = binStr + "0011".
            WHEN "4" THEN binStr = binStr + "0100".
            WHEN "5" THEN binStr = binStr + "0101".
            WHEN "6" THEN binStr = binStr + "0110".
            WHEN "7" THEN binStr = binStr + "0111".
            WHEN "8" THEN binStr = binStr + "1000".
            WHEN "9" THEN binStr = binStr + "1001".
            WHEN "A" THEN binStr = binStr + "1010".
            WHEN "B" THEN binStr = binStr + "1011".
            WHEN "C" THEN binStr = binStr + "1100".
            WHEN "D" THEN binStr = binStr + "1101".
            WHEN "E" THEN binStr = binStr + "1110".
            WHEN "F" THEN binStr = binStr + "1111".
            OTHERWISE RETURN "Invalid hex character: " + hexChar.
        END CASE.
    END.
    RETURN binStr.
END FUNCTION.

这个函数会将输入的十六进制字符串转为大写后逐个字符处理,每个十六进制字符对应4位二进制位,遇到非法字符会返回错误提示。

二进制转十六进制函数

FUNCTION binToHex RETURNS CHARACTER (inputBin AS CHARACTER):
    DEF VAR hexStr AS CHARACTER NO-UNDO.
    DEF VAR i AS INTEGER NO-UNDO.
    DEF VAR binChunk AS CHARACTER NO-UNDO.
    DEF VAR padLen AS INTEGER NO-UNDO.

    -- 验证输入是否仅包含0和1
    IF NOT INPUTBIN MATCHES "*[01]*" OR INPUTBIN MATCHES "*[^01]*" THEN
        RETURN "Invalid binary string: only 0s and 1s allowed.".

    -- 补前导0,让二进制长度是4的倍数
    padLen = 4 - (LENGTH(inputBin) MOD 4).
    IF padLen <> 4 THEN
        inputBin = REPEAT("0", padLen) + inputBin.

    DO i = 1 TO LENGTH(inputBin) BY 4:
        binChunk = SUBSTRING(inputBin, i, 4).
        CASE binChunk:
            WHEN "0000" THEN hexStr = hexStr + "0".
            WHEN "0001" THEN hexStr = hexStr + "1".
            WHEN "0010" THEN hexStr = hexStr + "2".
            WHEN "0011" THEN hexStr = hexStr + "3".
            WHEN "0100" THEN hexStr = hexStr + "4".
            WHEN "0101" THEN hexStr = hexStr + "5".
            WHEN "0110" THEN hexStr = hexStr + "6".
            WHEN "0111" THEN hexStr = hexStr + "7".
            WHEN "1000" THEN hexStr = hexStr + "8".
            WHEN "1001" THEN hexStr = hexStr + "9".
            WHEN "1010" THEN hexStr = hexStr + "A".
            WHEN "1011" THEN hexStr = hexStr + "B".
            WHEN "1100" THEN hexStr = hexStr + "C".
            WHEN "1101" THEN hexStr = hexStr + "D".
            WHEN "1110" THEN hexStr = hexStr + "E".
            WHEN "1111" THEN hexStr = hexStr + "F".
        END CASE.
    END.
    RETURN hexStr.
END FUNCTION.

该函数先验证输入的二进制字符串是否合法,再补前导0使长度为4的倍数,最后按4位一组转换为十六进制字符,返回大写结果。

测试示例

-- 测试十六进制转二进制
MESSAGE "Hex 'A3' to Bin: " + hexToBin("A3") VIEW-AS ALERT-BOX.
-- 测试二进制转十六进制
MESSAGE "Bin '10100011' to Hex: " + binToHex("10100011") VIEW-AS ALERT-BOX.

内容的提问来源于stack exchange,提问作者nivs nivs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 18:57:38