使用MODULO DIVISION方法将十进制数转换为十六进制数

时间:2018-04-01 05:38:45

标签: postgresql hex decimal modulus

我正在转换十进制数

  

42541956123769884636017138956568135808

到十六进制数

  

20014860486000000000000000008880

我转换后的值为div

我的Postgresql转换功能是

if (realContent.length == 0) {
  console.log("empty");
  $("#textBox").text(" ")
  $("#textBox").text("")
}

我正在使用modulo-remainder方法。所以我使用20014860486000000000000000019980获取给定数字的模数,并将给定的十进制数除以CREATE OR REPLACE FUNCTION ipv6_dec_hex(ip_number numeric) RETURNS character varying AS $BODY$ DECLARE ip int :=null; ip1 character varying := ''; ip2 character varying; BEGIN while(ip_number != 0) LOOP ip = trunc(mod(ip_number,16)); ip_number = trunc(ip_number/16); ip1:=ip1||to_hex(ip); raise notice 'ip is %',ip; raise notice 'ip_number is %',ip_number; END LOOP; ip2:=reverse(ip1); return ip2; END; $BODY$ LANGUAGE plpgsql VOLATILE COST 100; ,以进行连续的十六进制数转换。在第一次迭代中获取模数时,我得到了

  

16作为十六进制数16的最后一位数的余数

     

,下一个股息为0

在第二次迭代中取模数20014860486000000000000000008880得到

  

2658872257735617789751071184785508488作为十六进制数字2658872257735617789751071184785508488

的最后一位数的第二位      

,下一个股息为8

在第三次迭代中,取20014860486000000000000000008880的模数

  

166179516108476111859441949049094281作为余数,但166179516108476111859441949049094281是要进的确切十六进制数字   从十六进制数9的最后一位数字开始的第三位

如果上述股息价值为8 而不是20014860486000000000000000008880然后我会得到余数值为166179516108476111859441949049094280。我怎么能得到确切的十六进制值166179516108476111859441949049094281而不是8

1 个答案:

答案 0 :(得分:0)

如果你这样说,你将得到浮点除法,这将导致精度损失。

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.jfdimarzio.labb3.MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <Button
        android:id="@+id/btn_test"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button"
        android:visibility="visible"
        tools:layout_editor_absoluteX="16dp"
        tools:layout_editor_absoluteY="16dp" />

</android.support.constraint.ConstraintLayout>

反而说

ip_number = trunc(ip_number/16);

docs here

编辑后

完整来源:

ip_number = div(ip_number,16);