Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Autres questions


Index du Forum » Autres questions » Convertir des caractères en hexadécimal
Darkjura Hors ligne Membre Points: 389 Défis: 0 Message

Convertir des caractères en hexadécimal

Posté le 05/05/2020 16:04

Hi Everybody !
Alors voilà. Après une recherche approfondie sur le forum, je n'ai rien trouvé de tel.
!!! Si quelqu'un connaît un sujet dédié qu'il me fasse suivre le lien et je m'excuse pour mon manque de rigueur dans ma recherche !!!
Je m'explique.
Je parle ici uniquement de la notation hexadécimale.
De même que la lettre "A", par exemple, est codée sur un octet par "41" (il me semble ), comment pourrait-on obtenir la valeur hexadécimale d'un caractère créé, par exemple le fichier joint (en 6*8) ? Est-ce possible ?
Bien à vous
Moi

Fichier joint


1, 2, 3 Suivante
Lephenixnoir En ligne Administrateur Points: 24233 Défis: 170 Message

Citer : Posté le 05/05/2020 16:41 | #


Il y a trois objets ici :
• La chaîne de caractère avec un seul caractère "A"
• L'entier 0x41 = 65
• Le bitmap 6x8 représentant la lettre et stocké dans l'OS

En Basic Casio, il n'y a aucune façon de passer d'une de ces choses à une autre à moins d'écrire à la main toutes les correspondances. En C, on peut passer de la chaîne de caractère à la valeur entière en lisant simplement les données dans le tableaau, et on peut obtenir le bitmap par un syscall.

De façon méta, en-dehors d'un programme, l'encodage des caractères est documenté par Casio pour l'encodage FONTCHARACTER et par SimLo pour la partie bytecode du Basic. L'ensemble complet des bitmaps n'a pas été extrait à ma connaissance mais on peut les sortir avec un addin et Remiweb s'est amusé à les modifier dans l'OS un fois.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Zezombye Hors ligne Rédacteur Points: 1756 Défis: 13 Message

Citer : Posté le 05/05/2020 16:45 | #


Si si je m'étais fait chier à manuellement transcrire les bitmaps pour la police de BIDE

https://github.com/Zezombye/BIDE/blob/master/src/Casio%20Graph.ttf
Divers jeux : Puissance 4 - Chariot Wars - Sokoban
Ecrivez vos programmes basic sur PC avec BIDE
Darkjura Hors ligne Membre Points: 389 Défis: 0 Message

Citer : Posté le 05/05/2020 17:17 | #


Là, je parle du bitmap stocké dans l'OS. Peut-on modifier ce bitmap ? (J'ai regardé la manip de Remiweb Mais rien compris)
....Et donc quelqu'un saurait comment obtenir la valeur hexadécimale d'un caractère bitmap (6*8) créé ?
Zezombye Hors ligne Rédacteur Points: 1756 Défis: 13 Message

Citer : Posté le 05/05/2020 17:20 | #


- un caractère fait 6x8 pixels, la colonne de gauche et la ligne du bas étant vides pour la plupart des caractères.
- chaque ligne de pixels du caractère est codée sur un octet
- les deux derniers bits de cet octet sont inutilisés, donc des 0


C'est assez explicite, après pour obtenir un bitmap tu feras mieux de calculer la valeur hexa à la main. Pourquoi veux tu obtenir les valeurs hexa ?

Et oui on peut modifier le bitmap en modifiant l'OS, mais c'est risqué.
Divers jeux : Puissance 4 - Chariot Wars - Sokoban
Ecrivez vos programmes basic sur PC avec BIDE
Darkjura Hors ligne Membre Points: 389 Défis: 0 Message

Citer : Posté le 05/05/2020 17:28 | #


En fait à la base je voulais juste me documenter sur le codage hexadécimal, mais le topic de Remiweb m'a vachement interessé.
Tu es sûr que, si on indique à la calculatrice (en modifiant l'OS) un bitmap inconnu sous la forme d'un code hexadécimal, elle le comprendra ?
Autre chose : quels sont les risques de cette manip ? On peut craindre un flingage total de la calto ?
Lephenixnoir En ligne Administrateur Points: 24233 Défis: 170 Message

Citer : Posté le 05/05/2020 17:31 | #


Tu parles de la "valeur hexadécimale d'un bitmap" mais il n'y a pas de telle chose. Je ne vois pas ce que tu veux obtenir ni ce que tu veux modifier.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Darkjura Hors ligne Membre Points: 389 Défis: 0 Message

Citer : Posté le 05/05/2020 17:34 | #


Désolé, j'essaye de bien me faire comprendre.
En gros, la façon dont est codé le bitmap dans l'OS, c'est bien de l'hexadécimal, non ?
Zezombye Hors ligne Rédacteur Points: 1756 Défis: 13 Message

Citer : Posté le 05/05/2020 17:38 | #


C'est du binaire, qui peut être représenté en binaire, décimal, hexadécimal, base64, base36, fractions, etc.
Divers jeux : Puissance 4 - Chariot Wars - Sokoban
Ecrivez vos programmes basic sur PC avec BIDE
Darkjura Hors ligne Membre Points: 389 Défis: 0 Message

Citer : Posté le 05/05/2020 17:47 | #


Ah, okay. Mais donc le bitmap représentant le caractère "A" est codée de quelle manière en hexadécimal ?
C'est ça que je voulais dire par
Lephenixnoir a écrit :
la "valeur hexadécimale d'un bitmap".

En modifiant cette valeur, on obtiendra un bitmap différent ?
Lephenixnoir En ligne Administrateur Points: 24233 Défis: 170 Message

Citer : Posté le 05/05/2020 17:48 | #


Pour préciser un peu ce que dit Zezombye, les données sont des données, ce ne sont que des suites de 0 et de 1. Tu peux les écrire en hexadécimal, tu peux les représenter par un bitmap ; mais ce ne sont que des 0 et des 1. Le caractère 'A' et l'entier 65 sont la même chose par exemple, ils sont tous les deux 01000001 interprétés de façon différente.

Puisque tu as une image du caractère, tu as tout. Il n'y a rien d'autre à découvrir dans l'OS. Par contre tu peux te demander "quelle méthode est utilisée pour écrire ce bitmap avec des 0 et des 1 ?", auquel cas tu t'intéresses à l'encodage du bitmap. Ce n'est pas une conversion.

Si tu modifies les données dans l'OS, le bitmap sera différent oui.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Darkjura Hors ligne Membre Points: 389 Défis: 0 Message

Citer : Posté le 05/05/2020 17:52 | #


Je m’intéresse à l'encodage du bitmap. Quelle méthode est utilisée pour écrire ce bitmap avec des 0 et des 1 ? (j'ai pas compris du tout la méthode de ZZ )
Lephenixnoir En ligne Administrateur Points: 24233 Défis: 170 Message

Citer : Posté le 05/05/2020 17:55 | #


ZZ ne parle pas de la méthode d'encodage mais pointait juste le fait que "en hexadécimal" n'est pas un format. L'hexadécimal est juste une notation pour écrire les bits de façon un peu compacte, c'est une description des données pure qui ne te donne aucune information sur ce à quoi les données servent ni ce qu'elles représentent.

Donc, de mémoire, l'encodage pour ces bitmaps est le suivant. Il y un octet par ligne, et chaque bit vaut 1 pour représenter un pixel noir, 0 pour un pixel blanc. Donc ton A s'écrit :

01110000 = 0x70
10001000 = 0x88
10001000 = 0x88
11111000 = 0xf8
10001000 = 0x88
10001000 = 0x88
10001000 = 0x88

La forme courte serait donc 70 88 88 f8 88 88 88. Note qu'il y a des bits inutiles.

Ajouté le 05/05/2020 à 17:58 :
Y'a des infos sur l'encodage à taille variable de la petit police (plus compliqué) et le syscalls qui permettent de récupérer les adresses des glyphes dans l'OS dans la documentation de SimLo, si tu sais lire le C et l'anglais technique écrit rapidement.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Darkjura Hors ligne Membre Points: 389 Défis: 0 Message

Citer : Posté le 05/05/2020 17:58 | #


Merci beaucoup !
Mais pourquoi y a-il des bits inutiles ?et quels sont-ils ?
Lephenixnoir En ligne Administrateur Points: 24233 Défis: 170 Message

Citer : Posté le 05/05/2020 18:00 | #


(On s'est croisés, j'ai rajouté un lien dans mon message précédent à l'instant).

Les bits inutiles ce sont les 2 bits à la fin de chaque ligne. Tu sais que le bitmap est de 6x8, or il y a 8 bits disponibles par ligne. 2 de ces bits sont en fait inutilisés. Et comme les caractères font normalement 5x7, en fait 3 bits sont inutilisés, et l'octet final (que je n'ai même pas écrit) est inutilisé aussi.

Pourquoi ? Pour se simplifier la tâche. La calculatrice manipule toujours des octets entiers, donc c'est plus simple si chaque ligne est encodée sur ses octets à elle toute seule. Note que l'encodage de la petite police dont je parle plus haut et plus compact et les lignes se mélangent parfois sur le même octet, ce qui rend le travail de décodage un peu plus compliqué.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Darkjura Hors ligne Membre Points: 389 Défis: 0 Message

Citer : Posté le 05/05/2020 18:07 | #


(J'ai vu, effectivement)

Lephenixnoir a écrit :
Les bits inutiles ce sont les 2 bits à la fin de chaque ligne. Tu sais que le bitmap est de 6x8, or il y a 8 bits disponibles par ligne. 2 de ces bits sont en fait inutilisés. Et comme les caractères font normalement 5x7, en fait 3 bits sont inutilisés, et l'octet final (que je n'ai même pas écrit) est inutilisé aussi..

Ah oui, bien sûr
Mais les 0 et les 1, c'est du binaire...
...Et ça donne quoi en hexadécimal ? (oui, oui, toujours l'hexadécimal)
Lephenixnoir En ligne Administrateur Points: 24233 Défis: 170 Message

Citer : Posté le 05/05/2020 18:09 | #


Relis bien mon message, j'ai écrit la forme hexadécimale juste à côté.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Darkjura Hors ligne Membre Points: 389 Défis: 0 Message

Citer : Posté le 05/05/2020 18:13 | #


OOOps!!
J'avais pas vu !!
Super! Ça simplifie tout alors! Exactement ce que je voulais
Merci beaucoup de tes réponses rapides
Lephenixnoir En ligne Administrateur Points: 24233 Défis: 170 Message

Citer : Posté le 05/05/2020 18:13 | #


Garde bien en tête que ce n'est que l'encodage choisi par l'OS, il y a plein d'autre façons d'encoder cette image, y compris le format BMP dont les octets sont exactement ceux du fichier que tu as joins à ton message un peu plus tôt ^^"
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Darkjura Hors ligne Membre Points: 389 Défis: 0 Message

Citer : Posté le 05/05/2020 18:16 | #


Euh...
Ah oui ! C'est bon ! Compris !

Ajouté le 05/05/2020 à 18:22 :
Tu connaîtrais un logiciel pour ouvrir l'OS d'une calto en binaire (hélas non, pas en hexadécimal)
J'ai CodeBlocks, mais ça semble ne pas marcher...

Ajouté le 05/05/2020 à 18:23 :
Nan, oublie, je viens de réussir
Lephenixnoir En ligne Administrateur Points: 24233 Défis: 170 Message

Citer : Posté le 05/05/2020 18:24 | #


Tu connaîtrais un logiciel pour ouvrir l'OS d'une calto en binaire (hélas non, pas en hexadécimal)

Comme on l'a dit, le binaire et l'hexa ne sont que deux faces de la même chose, tout éditeur hexa décent t'affichera le binaire.

Mais prends l'habitude de bosser avec l'hexa si tu peux, parce que personne ne s'embête à écrire le binaire complet sauf pour faire des images. C'est pas assez compact.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
1, 2, 3 Suivante

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 119 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd