Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
133 changes: 83 additions & 50 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,50 +4,78 @@
<img src="https://img.shields.io/badge/With%20Python%20Support-yellow?style=for-the-badge&logo=python" width="152" height="" alt="Python-Support" style="margin-right:20px" align="right"/>


#### Apropos du Base Converter
# BaseConv (bcv)

**bcv** (*Base Converter*) est un outil en ligne de commande simple, rapide et libre, conçu pour convertir des nombres entre différentes bases numériques : **binaire**, **octale**, **décimale** et **hexadécimale**.
**bcv** (*Base Converter*) est un outil en ligne de commande simple, rapide et libre,
conçu pour convertir des nombres entre différentes bases numériques :

> Développé par **KerHack-Libre**, dans un esprit **éducatif et pratique**, pour aider chacun à acquérir une **base solide en numérisation informatique** — la fondation de tout système logiciel.
- Binaire (2)
- Octale (8)
- Décimale (10)
- Hexadécimale (16)

> Développé par **KerHack-Libre**, dans un esprit **éducatif, local et pratique**,
> pour aider chacun à acquérir une **base solide en numérisation informatique**.

---

##### Objectif du projet
## 🎯 Objectif du projet

Ce projet est né d’un besoin simple mais fondamental :
**comprendre, manipuler et visualiser les bases numériques** qui sont au cœur de tout ce que fait un ordinateur.
Bcv se veut d'etre leger et simpliste sans passer par d'outils lourds.
qui permet de faire:

> Une chose aussi basique peut ouvrir des portes incroyables sur la compréhension du fonctionnement interne des machines — et même aider à créer de meilleurs logiciels.
- Inspecter et déboguer des signatures de fichiers binaires
- Vérifier rapidement une valeur hexadécimale
- Visualiser un décalage binaire (`<<`, `>>`)
- Tester des expressions numériques shell

**bcv** n’est pas qu’un convertisseur :
c’est un petit compagnon du quotidien pour les développeurs, étudiants, hackers, ou passionnés de bas niveau.
Je l’utilise moi-même chaque jour pour :
- inspecter et déboguer des signature sur des fichiers **fichiers binaires**
- ou simplement vérifier rapidement une conversion en **binaire / hex / octal** sans lancer d’outil lourd.
#### Dimension éducative

---
Comprendre les bases numériques, c’est comprendre la langue native des ordinateurs.

##### Dimension éducative
**bcv** a été conçu :

Comprendre les bases numériques, c’est comprendre la langue native des ordinateurs.
- Pour initier aux fondements du système de numérisation
- Pour visualiser concrètement les représentations numériques
- Pour renforcer les compétences bas niveau
- Pour établir une base solide de compétences à l’ère numérique

**bcv** a été conçu dans un but éducatif:
#### Fonctionnalités

pour initier les étudiants et curieux aux bases du système de numérisation informatique ;
- [x] Conversion instantanée entre bases 2, 8, 10, 16
- [x] Détection automatique des préfixes (`0b`, `0o`, `0x`)
- [x] Affichage des caractères ASCII imprimables (32 → 127)
- [x] Support des expressions shell :
```bash
bcv $((10 << 2))
```

pour permettre aux développeurs de visualiser concrètement ce qui se cache derrière les chiffres et les octets ;
- [x] Support des caractères entre guillemets :
```bash
bcv "#"
```

et pour montrer que même un petit outil simple peut être une porte d’entrée vers la programmation système et la conception logicielle.
- [x] Mode interactif amélioré
- [x] Sortie claire et structurée
- [x] Compact, rapide et sans dépendance externe

##### Fonctionnalités
#### TODO
- [ ] Different Format de sortie :
- [ ] JSON
- [ ] Yaml
- [ ] XML

#### Architecture & Intégration

- Conversion instantanée entre **bases 2, 8, 10 et 16**
- **Shell interactif** intégré (`b/`, `o/`, `x/` ou `exit`)
- **Détection automatique** du format d’entrée (`0b`, `0o`, `0x`)
- ⚙️ **Compact**, **rapide** et **sans dépendance**
- Parfait pour l’apprentissage, le scripting et le débogage
- Compatible **Unix/Linux**, compilable avec **GCC**
---
bcv repose sur une librairie C locale, développée sans dépendance externe.

Elle permet :
- Une intégration directe dans d'autres programmes
- Une architecture modulaire
- Une autonomie technologique totale

Ce n’est pas seulement un outil CLI,
c’est aussi un composant réutilisable.

##### Installation

Expand Down Expand Up @@ -78,24 +106,7 @@ bcv [OPTION] <NOMBRE>

```

#### Mode Interactive

Lancer simplement
```bash
bcv
```
Puis entrer les commandes :

```bash
b/42 → convertit en binaire
x/255 → convertit en hexadécimal
o/77 → convertit en octal
exit → quitte le shell
```

#### mode Rapide

#### Exemples
###### Mode direct ou rapide

```bash
$ bcv 12
Expand All @@ -109,12 +120,34 @@ DEC : 65261
OCT : 0o177355
BIN : 0b1111111011101101

$ bcv E
DEC : 69
HEX : 0x45
OCT : 0o105
BIN : 0b1000101
$ bcv 33

DEC: 33
HEX: 0x21
OCT: 041
BIN: 0b100001
CHR: !
```

###### Expression shell
> bcv $((1 << 2))

###### Caractère ASCII
> bcv "U"

#### Mode Interactive

Lancer simplement
```bash
bcv
```
Puis entrer les commandes :

```bash
b/42 → convertit en binaire
x/255 → convertit en hexadécimal
o/77 → convertit en octal
exit → quitte le shell
```

Une Page de manuel est incluse
Expand Down
File renamed without changes.
140 changes: 130 additions & 10 deletions doc/manpage/bcv.fr.1 → doc/manpage/fr/bcv.1
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
.TH BCV 1 "Octobre 2025" "Version 1.0.1" "Commandes Utilisateur"
.TH BCV 1 "Octobre 2025" "Version 1.2.5" "Commandes Utilisateur"
.SH NOM
bcv \- convertir des nombres en représentation binaire, octale ou hexadécimale
.SH SYNOPSIS
Expand All @@ -21,6 +21,60 @@ Représentation octale (chiffres 0–7)
.TP
\fBBase 16\fR
Représentation hexadécimale (chiffres 0–15, c’est-à-dire 0–f)

.SH FONCTIONNALITÉS
.TP
Conversion multi-bases
Affiche les représentations DEC, HEX, OCT et BIN.

.TP
Détection automatique
Reconnaît automatiquement les préfixes :
0b (binaire), 0x (hexadécimal), 0o (octal).

.TP
Affichage ASCII
Si la valeur convertie est comprise entre 32 et 127,
le caractère ASCII imprimable correspondant est affiché (CHR).

.TP
Support des expressions shell
Compatible avec les expressions arithmétiques shell :

bcv $((10 << 2))

.TP
Support des caractères
Les caractères doivent être fournis entre guillemets :

bcv "#"

.TP
Mode interactif amélioré
Invite numérotée, support des conversions directes,
détection automatique du type d’entrée.

.SH OPTIONS
.TP
.B \-b <nombre>
Conversion explicite en binaire.

.TP
.B \-o <nombre>
Conversion explicite en octal.

.TP
.B \-x <nombre>
Conversion explicite en hexadécimal.

.TP
.B \-v
Affiche la version du programme.

.TP
.B \-h
Affiche l’aide.

.SH UTILISATION
.nf
Utilisation : bcv [OPTION] ... <NOMBRE>
Expand All @@ -29,10 +83,11 @@ Convertir un nombre vers une base spécifique.

Ligne directe | Mode interactif | Description
---------------|----------------|----------------------------+
-b <nombre> | b/<nombre> | Conversion en binaire |
-x <nombre> | x/<nombre> | Conversion en hexadécimal |
-o <nombre> | o/<nombre> | Conversion en octal |
| exit ou quit | Quitter le mode interactif |
-b <nombre> | b/<nombre> | Conversion en binaire |
-x <nombre> | x/<nombre> | Conversion en hexadécimal |
-o <nombre> | o/<nombre> | Conversion en octal |
-c <caractere>| <caracter> | Code ascii |
| exit ou quit | Quitter le mode interactif |
-------------------------------------------------------------+
-v, 'v' ou '!' Affiche la version du programme
-h, 'h' ou '?' Affiche cette aide
Expand All @@ -48,8 +103,60 @@ o/<nombre> → convertir en octal
x/<nombre> → convertir en hexadécimal
.br
exit ou quit → quitter le shell interactif
.RE

\fBSi lancé sans argument\fR:

$ bcv

Exemple :

[1] bcv > 0x12
DEC: 18

[2] bcv > U
DEC: 85
HEX: 0x55
OCT: 0125
BIN: 0b1010101
CHR: U

Commandes disponibles :

b/<valeur> → binaire
o/<valeur> → octal
x/<valeur> → hexadécimal
exit → quitter
quit → quitter

.SH SORTIE
La sortie standard affiche :

DEC - représentation décimale
HEX - représentation hexadécimale
OCT - représentation octale
BIN - représentation binaire
CHR - caractère ASCII imprimable (si applicable)

.SH EXEMPLES
.TP
Conversion simple :
bcv 33

.TP
Expression shell :
bcv $((1<<2))

.TP
Caractère ASCII :
bcv "A"

.TP
Détection automatique :
bcv 0xFEED


.RE
.SH EXEMPLES D'UTILISATION
Voici quelques exemples d’utilisation de \fBbcv\fR :
.TP
Convertir 255 en hexadécimal :
Expand Down Expand Up @@ -115,18 +222,31 @@ DEC : 19
HEX : 0x13
OCT : 0o23
.fi
.RE
.RE

.SH INTÉGRATION
bcv repose sur une librairie C locale,
sans dépendance externe.

Elle peut être intégrée dans d’autres projets logiciels
afin d’effectuer des conversions de bases
directement depuis du code C.

.SH VERSION
BaseConverter (bcv) version 1.0.1
BaseConverter (bcv) version 1.2.5
par KerHack-Libre
.SH AUTEUR
Umar Ba <jUmarB@protonmail.com>
Umar Ba
.br
<https://github.com/Jukoo>
.SH COPYRIGHT
Copyright (c) 2025 KerHack-Libre
.br
Ce logiciel est libre et distribué SANS AUCUNE GARANTIE.
.SH VOIR AUSSI
\fBbc\fR(1)
\fBbc\fR(1)
.SH VOIR AUSSI
.BR bc (1),
.BR xxd (1),
.BR hexdump (1)

2 changes: 1 addition & 1 deletion meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ bcv_sources=[
'src/bcvrepl.c' # Contain the repl shell
]

install_man(['doc/manpage/bcv.1'])
install_man(['doc/manpage/fr/bcv.1'])
#
#NOTICE : The logic of baseconv is builded as External Shared and static library
# to make it more extensible
Expand Down
4 changes: 2 additions & 2 deletions src/baseconv.c
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@


char bc_global_buffer[0xff]={0} ;
uf64_t __allbase_enable__ = (BIN|CHR|OCT|HEX|429496729600);
uf64_t __allbase_enable__ = (BIN|CHR|OCT|HEX|0x6400000000);

char * bc_hex( uf64_t value)
{
Expand Down Expand Up @@ -130,7 +130,7 @@ uf64_t __bcv_guess_base(const char * restrict num , void (*base_printer)(uf64_t)
break;
default :
//! decimal
options&=~429496729600 ;
options&=~0x6400000000 ;
value = strtol(num, (void*)0 , 10) ;
goto _end;
}
Expand Down