当前位置: 首页 > 知识库问答 >
问题:

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

萧允晨
2023-03-14

我有这样的源代码

<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属性登录时,我无法获取十六进制值。。我尝试使用type=“STRING”无法获取值。我的问题是如何获得wso2中十六进制的值?

在我检查后,问题是wso2无法为十六进制添加属性。。所以我需要转换我的变量newAmountHex=(“0x”newAmount.toString(16));变成字符串值

我用过这个

var newAmountHexString=hex_to_ascii(newAmountHex);函数hex_to_ascii(str1){var hex=str1.toString(); var str = ''; (var n=0; n

但我在(var n=0;n)中得到了错误

[2020-09-03 04:11:16,006] [EI-Core]  INFO - CommonScriptMessageContext New Amount : 9.9
[2020-09-03 04:11:16,008] [EI-Core]  INFO - CommonScriptMessageContext New AmountHex : 0x9.e666666666668feeHex0x0.1999999999999a
[2020-09-03 04:11:16,009] [EI-Core]  INFO - LogMediator To: /EtheriumTransaction, MessageID: urn:uuid:ccc5bd5d-99d4-4d82-9ae3-87252d5c2af8, Direction: request, newAmount_hex = 

共有1个答案

锺离卓
2023-03-14

wso2有时会表现得很怪异,但要想在房产中获得价值,你需要添加。toString()位于值的末尾,将其设置为属性。

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

这对我有用:)

 类似资料:
  • 问题内容: 我在ex中有整数。16,我正在尝试将此数字转换为十六进制数字。我试图通过使用十六进制函数来实现此目的,但是每当您向十六进制函数提供整数时,它都会返回十六进制数字的字符串表示形式, 有人可以告诉我如何将字符串格式的十六进制数字转换为简单的十六进制数字。 谢谢!! 问题答案:

  • 本文向大家介绍如何将十六进制转换为十进制?,包括了如何将十六进制转换为十进制?的使用技巧和注意事项,需要的朋友参考一下 而十六进制数是具有值是16的数字系统中的一个并且它具有唯一的16个码元:0,1,2,3,4,5,6,7,8,9和A,B,C,d,E ,其中A,B,C,D,E和F分别是十进制值10、11、12、13、14和15的单位表示。而十进制系统是最熟悉的号码系统向公众开放。它是10的基数,只

  • 本文向大家介绍如何将十进制转换为十六进制?,包括了如何将十进制转换为十六进制?的使用技巧和注意事项,需要的朋友参考一下 十进制是公众最熟悉的数字系统。它是基数10,只有10个符号-0、1、2、3、4、5、6、7、8和9。而十六进制是计算机或数字系统中最常见的数字系统颜色表示。它是基数16,只有16个符号:0、1、2、3、4、5、6、7、8、9和A,B,C,D,E,F。这些A,B,C,D ,E,F分

  • 问题内容: 我编写了一个简单的程序,用于在Java中向串行端口发送和接收数据。我通过回送测试(Rx到Tx)连接串行端口设备。它工作正常。但我无法发送和接收十六进制数据到串行端口和接收串行端口。在我的设备中使用了FT232BL芯片,因此是否需要任何dll或其他库来将十六进制数据发送和接收到串行端口设备。我的代码如下。 问题答案: 十六进制: 十六进制为:

  • 我有十六进制字符串,例如“0x103E”,我想将其转换为整数。意思是to我尝试了但它给出了数字格式异常。我如何实现这一点?

  • 我用JSON格式存储了很多颜色。我使用rootbeer via gulp将它们转换为sass映射,可以由SCSS处理: 至 我可以很好地使用语法中的颜色,但一旦应用了任何颜色函数,如,编译器就会失败,因为颜色类型完全消失了。 即使使用也不允许sass将其视为字符串,但它需要是一种颜色。 我的问题是,是否有任何方法可以让我强制编译器将此作为一种颜色来处理呢?另一种方法是省略所有内置颜色函数的使用。