Bonjour à tous,
Je cherche de l'aide pour récupérer la valeur en décimal de 4 unsigned long stocké en base en python. Help !
Voici la définition en IDL de mon type de donnée :
Dans ma doc d'aide, j'ai l'explication sur les 3 types :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 const long Decimal_words = 4; typedef unsigned long Decimal_Data[Decimal_words]; struct Decimal { short sign; short scale; Decimal_Data words; };
short sign
The sign 0 means zero value > 0 means positive value < 0 means negative value.
short scale
The scale in decimal digits.
Decimal_Data words
Actual 32 bit words, least significant first This is the unsigned representation of the number.
En regardant ici : http://www.astro.princeton.edu/~esir....html#wp671985
Je constate que le unsigned long va de 0 à 2^32-1
En faisant plusieurs essai pour rentrer des valeurs dans mon outil, voilà ce que j'obtiens en sortie.
Maintenant en valeur négative
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 4*294*967*297 = 2^32+1 -> sign=1, scale=4, words=[0L, 10000L, 0L, 0L] 4*294*967*296 = 2^32 -> sign=1, scale=4, words=[10000L, 10000L, 0L, 0L] 4 294 967 295 = 2^32-1 -> sign=1, scale=4, words=[4294957296L, 9999L, 0L, 0L] 4 294 967 294 = 2^32-2 -> sign=1, scale=4, words=[4294947296L, 9999L, 0L, 0L] 2 147 483 648 = 2^31 -> sign=1, scale=4, words=[0L, 5000L, 0L, 0L] 1 073 741 824 = 2^30 -> sign=1, scale=4, words=[0L, 2500L, 0L, 0L] 1 073 741 823 = 2^30-1 -> sign=1, scale=4, words=[4294957296L, 2499L, 0L, 0L] 2 097 152 = 2^21 -> sign=1, scale=4, words=[3791650816L, 4L, 0L, 0L] 1 048 577 = 2^20+1 -> sign=1, scale=4, words=[1895835408L, 2L, 0L, 0L] 1 048 576 = 2^20 -> sign=1, scale=4, words=[1895825408L, 2L, 0L, 0L] 1 048 575 = 2^20-1 -> sign=1, scale=4, words=[1895815408L, 2L, 0L, 0L] 1 024 = 2^10 -> sign=1, scale=4, words=[10240000L, 0L, 0L, 0L]
En bref, j'ai du mal à construire la logique pour récupérer ma valeur de départ !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 -3*135*012*625,55 -> sign=-1, scale=4, words=[1159961996L, 7299L, 0L, 0L] -3*135*012*624,09 -> sign=-1, scale=4, words=[1159947396L, 7299L, 0L, 0L] -3*135*012*623,36 -> sign=-1, scale=4, words=[1159940096L, 7299L, 0L, 0L] -1*567*506*312,41 -> sign=-1, scale=4, words=[2727460996L, 3649L, 0L, 0L] -1*530*767,88 -> sign=-1, scale=4, words=[2422776912L, 3L, 0L, 0L]
Merci de votre aide.
Partager