AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  Connexion  

Partagez | 
 

 [Haxe] Types numériques et Manipulations booléennes

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Chlorodatafile
Utilisateur confirmé: Rang *****
avatar

Messages : 2927
Localisation : Belfort
Projet Actuel :
Paralights

MessageSujet: [Haxe] Types numériques et Manipulations booléennes   Mer 20 Mai 2015 - 20:16

Bonjour ! Smile

Habitué à la grande multitude de types numériques dans les langages utilisé jusque maintenant, je me sens un peu perdu en arrivant en Haxe avec des Float et des Int, et rien d'autre. triste2

Dans le cas où je me trouve, je vais avoir besoin de plusieurs tableau pouvant stocker des valeurs allant de 0 à 128, je souhaiterais donc utiliser le plus petit volume mémoire possible pour mes variables.

Le problème étant que, je ne trouve même pas la taille mémoire d'un Int basique, j'ai bien vu qu'il y avait des ByteArray dans la librairie haxe.io, mais je ne trouve quasiment rien sur leur utilisation ...

Pourrait-on m'éclairer un peu ? Smile

Pour aider, dans l'idéal, je dois pouvoir stocker dans une matrice tridimensionnelle des objets contenant des structures de données à taille variable, mais contenant tous au moins un identifiant numérique de type de case, pouvant être unique, double ou triple. Une map devant pouvoir faire au moins 128*64*128, il me faut concevoir une structure suffisamment légère.

Merci par avance. Smile

PS : Si on me répond C++, j'y ai pensé, mais, pas pour ce projet là, désolé. Wink


Dernière édition par Chlorodatafile le Mar 16 Juin 2015 - 11:58, édité 1 fois
Revenir en haut Aller en bas
http://chlorodatafile.tumblr.com/
onilink_
Modérateur
avatar

Messages : 8904
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: [Haxe] Types numériques et Manipulations booléennes   Mer 20 Mai 2015 - 20:49

T'as http://api.haxe.org/haxe/io/Bytes.html mais il gère au plus petit que des Int16.

Ce que je ferais c'est ma propre classe custom qui contiens un array de Int32, et j'utiliserais les opérateurs binaires pour les manipuler byte a byte.
Le seul truc 'complexe' a écrire c'est les méthodes get/set:

Code:
get_byte(pos: Int):Int
{
  var shift = (pos % 4) << 3;
  return (array[ pos/4 ] & (0xFF << shift)) >> shift;
}

set_byte(pos: Int, byte: Int):Int
{
  var shift = (pos % 4) << 3;
  array[ pos/4 ] = (array[ pos/4 ] & ~(0xFF << shift)) | (byte << shift);
}

Bon par contre normalement vaux mieux utiliser un int non signé, je sais pas comment haxe gère les "dépassements", mais si tu limites les valeurs de 0 a 128 devrait pas y avoir de soucis.

Edit:

Tout con en fait: http://api.haxe.org/haxe/io/UInt8Array.html

_________________
                 
Revenir en haut Aller en bas
Chlorodatafile
Utilisateur confirmé: Rang *****
avatar

Messages : 2927
Localisation : Belfort
Projet Actuel :
Paralights

MessageSujet: Re: [Haxe] Types numériques et Manipulations booléennes   Mer 20 Mai 2015 - 20:58

Je ne vais pas jouer avec les dépassements donc ça devrait aller oui. Smile
Je ne pense pas que le Haxe a une réelle gestion du dépassement, ça doit dépendre du langage d'export surtout. Wink

Je vais essayer de comprendre ton code avant de l'utiliser, mais merci. Very Happy

Edit : Ah bah ouaip, je l'avais pas vu lui, Mea Culpa. sweat Je vais essayer de chercher des informations dessus. Merci. Very Happy

Revenir en haut Aller en bas
http://chlorodatafile.tumblr.com/
Chlorodatafile
Utilisateur confirmé: Rang *****
avatar

Messages : 2927
Localisation : Belfort
Projet Actuel :
Paralights

MessageSujet: Re: [Haxe] Types numériques et Manipulations booléennes   Mar 16 Juin 2015 - 11:57

onilink_ a écrit:
Code:
get_byte(pos: Int):Int
{
  var shift = (pos % 4) << 3;
  return (array[ pos/4 ] & (0xFF << shift)) >> shift;
}

set_byte(pos: Int, byte: Int):Int
{
  var shift = (pos % 4) << 3;
  array[ pos/4 ] = (array[ pos/4 ] & ~(0xFF << shift)) | (byte << shift);
}

(Recyclage de topic ! \o/ )

Les opérations que tu fais là m’intéresse car pour ainsi dire, les opérateurs >>, <<, |, & et ~ sont des opérateurs booléan, mais je n'ai pas trop compris comment ils fonctionnent. x)

Dans une optique de progression avant tout, j'essaye de manipuler à la manière que j'ai pu te voir faire là, plusieurs taille d'encodage de nombre dans un Int. Smile

Par exemple, je veux faire en sorte que sur une séquence de 4 Octet, taille par défaut d'un Int, j'ai du genre ça comme cases :
[] [][][][][][][][][] [][][][][][][][][] [][][][][][][][][] [][][][]

En bref, je cherche à découper de manière dynamique les bits de mon fichier pour l’interpréter tel que je veux, en gardant parfois le byte seul, donc 0 ou 1, ou en le groupant avec 8 autres bit pur l’interpréter en un nombre de 0 à 511. Smile

Donc première question : Suis-je simplement fou ou un abrutis fini ?  awesome
Seconde question : Pourrait-on m'expliquer un peu le fonctionnement de ses opérateurs ? Enfin, dans le cas présent, car j'ai du mal à le visualiser.  sweat
Revenir en haut Aller en bas
http://chlorodatafile.tumblr.com/
onilink_
Modérateur
avatar

Messages : 8904
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: [Haxe] Types numériques et Manipulations booléennes   Mar 16 Juin 2015 - 13:03


_________________
                 
Revenir en haut Aller en bas
Chlorodatafile
Utilisateur confirmé: Rang *****
avatar

Messages : 2927
Localisation : Belfort
Projet Actuel :
Paralights

MessageSujet: Re: [Haxe] Types numériques et Manipulations booléennes   Mar 16 Juin 2015 - 15:27

Ooooh ! Tu avais déjà pensé à tout il y a un moment je vois ! Razz Je regarde ça. Very Happy

Merci. Very Happy
Revenir en haut Aller en bas
http://chlorodatafile.tumblr.com/
Contenu sponsorisé




MessageSujet: Re: [Haxe] Types numériques et Manipulations booléennes   

Revenir en haut Aller en bas
 
[Haxe] Types numériques et Manipulations booléennes
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Master édition contemporaine et numérique de Lorient
» Revue de presse Janvier 2011
» Journée d'études sur les collections numériques-BMVR Alcazar
» Echos des Master pro en bibliothèque : quel master choisir ?
» Un Maître à connaître : Grigori GRABOVOÏ

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum Le CBNA :: Développement :: Entraide débutants-
Sauter vers: