Conversion d'un horodatage Int96 de Parquet vers Go
La tâche à accomplir consiste à transformer un horodatage Int96 de 12 octets stocké au format Parquet en un Horodatage compatible Go. Le format int96 prend en charge les horodatages sous la forme d'un tableau ordonné de 12 octets, où les 8 premiers octets représentent le temps en nanosecondes et les 4 octets restants symbolisent la date en nombre de jour julien.
Processus de conversion détaillé :
-
Inverser l'ordre des octets de temps : Les horodatages Int96 utilisent l’ordre inversé des octets. Par conséquent, les octets de temps (les 8 premiers) doivent être inversés.
-
Calculer le temps en nanosecondes : Interprétez les octets de temps inversés comme un nombre entier pour déterminer le temps en nanosecondes.
-
Obtenez le numéro du jour julien : Inversez les 4 octets restants pour obtenir le jour julien Nombre.
-
Convertir le numéro du jour julien en date : Utilisez une bibliothèque ou une fonction pour convertir le numéro du jour julien en un objet date.
Exemple :
Considérez un horodatage int96 comme un tableau de 12 octets : [128 76 69 116 64 7 0 0 48 131 37 0]
- Inverser les octets de temps : [0 0 0 0 29 32 4B FD 60]
- Convertir en nanosecondes : 0x60FD4B3229000000 = 45296 * 10^9 nanosecondes
- Inverser les octets de date : [0 25 68 59]
- Convertir en numéro de jour julien : 0x59682500 = 2451545
- Convertir en date : à l'aide d'un bibliothèque/fonction, convertissez le numéro du jour julien en la date correspondante, qui dans ce cas est 01/01/2000
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!