如何在wso2中设置十六进制的类型并将十六进制转换为字符串

如何在wso2中设置十六进制的类型并将十六进制转换为字符串,wso2,hex,Wso2,Hex,我有这样的源代码 <api context="/EtheriumTransaction" name="EtheriumTransaction" xmlns="http://ws.apache.org/ns/synapse"> <resource methods="POST"> <inSequence> <log>

我有这样的源代码

<api context="/EtheriumTransaction" name="EtheriumTransaction" xmlns="http://ws.apache.org/ns/synapse">
    <resource methods="POST">
        <inSequence>
            <log>
                <property expression="json-eval($)" name="payload"/>
            </log>
            <!-- 
            <log>
                <property expression="json-eval($.id)" name="idusr"/>
            </log>
             -->
             <!-- Get Value of Json -->
            <property expression="json-eval($.id)" name="idusr" scope="default" type="STRING"/>
            <property expression="json-eval($.type)" name="types" scope="default" type="STRING"/>
            <property expression="json-eval($.from_address)" name="address_from" scope="default" type="STRING"/>
            <property expression="json-eval($.to_address)" name="address_to" scope="default" type="STRING"/>
            <property expression="json-eval($.amount)" name="amount" scope="default" type="STRING"/>
           <!-- Convert Amount will send and fee become hex  -->
            <script language="js">
            var log = mc.getServiceLog();
            var amountString = mc.getProperty("amount");
            var amountFloat = parseFloat(amountString);
            var feeString   = "0.1";
            var feeFloat = parseFloat(feeString);
            var newAmount = amountFloat - feeFloat;
            log.info("New Amount : " + newAmount );
            var feeHex = ("0x" + feeFloat.toString(16));
            var newAmountHex = ("0x"+ newAmount.toString(16));
            log.info("New AmountHex : " + newAmountHex  + "feeHex" + feeHex );
            mc.setProperty("newAmountHexs", newAmountHex);
            </script>
            <log>
            <property name="newAmount_hex" scope="default" type="String" expression="$ctx:newAmountHexs" />
            </log>
        </inSequence>
        <outSequence/>
        <faultSequence/>
    </resource>
</api>

wso2有时行为怪异,但要在属性中获取值,需要在值的末尾添加.toString(),将其设置为属性

mc.setProperty("newAmountHexs", newAmountHex.toString());

这对我很有用:)

还有一件事。要将浮点转换为十六进制,可以使用:var newAmountHex=java.lang.float.tohextString(newAmount)
mc.setProperty("newAmountHexs", newAmountHex.toString());