Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Oracle SQL->如何将十六进制数转换为有符号32位整数(即不转换为十进制数)_Oracle - Fatal编程技术网

在Oracle SQL->如何将十六进制数转换为有符号32位整数(即不转换为十进制数)

在Oracle SQL->如何将十六进制数转换为有符号32位整数(即不转换为十进制数),oracle,Oracle,在Oracle SQL中,我可以转换十六进制数=b60d9800 转换为十进制数=3054344192 通过使用查询: 从双通道中选择编号“b60d9800”、“xxxxxxxx” 但是我还需要它来给我有符号的32位整数=-1240623104 有人知道如何使用Oracle SQL进行此转换吗?看过 这并不能完全解决我的问题,但却将我引向了正确的方向。我提出了以下解决方案: select (case when m> 2147483647 then (m - Power(2,32))

在Oracle SQL中,我可以转换十六进制数=b60d9800 转换为十进制数=3054344192 通过使用查询:

从双通道中选择编号“b60d9800”、“xxxxxxxx”

但是我还需要它来给我有符号的32位整数=-1240623104

有人知道如何使用Oracle SQL进行此转换吗?

看过 这并不能完全解决我的问题,但却将我引向了正确的方向。我提出了以下解决方案:

select (case when m> 2147483647 then (m - Power(2,32))
                                else (m) end) a
from (select mod(n, Power(2,32)) m 
      from (select to_number('b60d9800', 'xxxxxxxx') n from dual))

您还可以用Power2,32/2-1替换2147483647,以获得:当m>Power2,32/2-1时选择大小写,然后m-Power2,32 else m end a从select modn,Power2,32 m从select到_number'bcc9c000',xxxxxxxx'n从dual;你也可以用m>=power2,31来代替它,谢谢-所以当m>=power2,32/2然后m-power2,32否则m结束a从select modn,power2,32 m从select到_number'bcc9c000',xxxxxxxx'n从DUAL你可以编辑你的答案在post下面的“查找编辑”按钮。此外,power2,31更容易理解,IMHO。