Convertire bin to decimal

houarihabiba 1 Messages postés mercredi 15 février 2017Date d'inscription 17 février 2017 Dernière intervention - 17 févr. 2017 à 15:42 - Dernière réponse : Cirec 4191 Messages postés vendredi 23 juillet 2004Date d'inscriptionModérateurStatut 12 décembre 2017 Dernière intervention
- 20 févr. 2017 à 17:19
Bonjour,
lorsque on convertir un chiffre binaire >12 par exemple 100010011011 cette fonction ne convertir pas????
Afficher la suite 

7 réponses

Répondre au sujet
dubois77 670 Messages postés jeudi 17 avril 2008Date d'inscription 10 décembre 2017 Dernière intervention - Modifié par dubois77 le 18/02/2017 à 08:21
0
Utile
1
Salut
C'est pas très clair !
<< 12 par exemple 100010011011>>
Quel rapport entre le "12" et le "100010011011"
Je suppose que c'est du binaire, auquel cas effectivement ça n'est pas 12
Donne un bout de code ou tu utilises cette soit disante fonction "bintidcimal"
Whismeril 10592 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 17 décembre 2017 Dernière intervention - 18 févr. 2017 à 08:52
Bonjour dubois,

peut être qu'avec >12, il voulait dire que jusqu'à 12 ça marche et après non?
Commenter la réponse de dubois77
dubois77 670 Messages postés jeudi 17 avril 2008Date d'inscription 10 décembre 2017 Dernière intervention - 18 févr. 2017 à 09:21
0
Utile
1
Salut Whismeril
Tu as raison c'est ce qu'il semble dire.
Par contre je ne connais pas de function Delphi qui fasse ce travail.
Il y a déjà eu le même sujet traité qui donne une fonction :
http://codes-sources.commentcamarche.net/forum/affich-907853-conversion-binaire-decimal
dubois77 670 Messages postés jeudi 17 avril 2008Date d'inscription 10 décembre 2017 Dernière intervention - 18 févr. 2017 à 09:23
Commenter la réponse de dubois77
Cirec 4191 Messages postés vendredi 23 juillet 2004Date d'inscriptionModérateurStatut 12 décembre 2017 Dernière intervention - 18 févr. 2017 à 13:16
0
Utile
Salut,

c'est vrai que ce n'est pas un modèle de clarté !!! ^^

Mais en cherchant un peu sur Google (eh oui encore lui :p)
on trouve ceci:
 // http://stackoverflow.com/questions/21361627/converting-decimal-integer-to-binary-how-and-why-it-works-the-way-it-does
function IntToBin(p_nb_int: Uint64; p_nb_digits: Byte = 64): string;
begin
  SetLength(Result, p_nb_digits);
  while p_nb_digits > 0 do
  begin
    if odd(p_nb_int) then
      Result[p_nb_digits] := '1'
    else
      Result[p_nb_digits] := '0';
    p_nb_int := p_nb_int shr 1;
    dec(p_nb_digits);
  end;
end;


et son utilisation:
Edit1.Text := '2203';
  Label1.Caption := IntToBin(StrToInt(Edit1.Text), 12);
résultat: "100010011011"
Commenter la réponse de Cirec
0
Utile
1
Salut,
Je vais répondre sur...ben ici...
Voilà des fonctions...qui ressemble à celle proposée par Cirec...
uses Math,...
...
type
TSizeBits = (sb8Bits, sb16Bits, sb32Bits, sb64Bits);
...
function BinToInt64(S: string; ASizeBits: TSizeBits): Int64;
var
  I : Integer;
  J : Integer;
  FSizeBits: Byte;
begin
  Result := 0;
  J := 0;
  case ASizeBits of
    sb8Bits: FSizeBits := 8;
    sb16Bits: FSizeBits := 16;
    sb32Bits: FSizeBits := 32;
    sb64Bits: FSizeBits := 64;
  end;
  while Length(S) < FSizeBits do
    S := '0' + S;
  for I := Length(S) downto 2 do
  begin
    if Odd(Byte(S[I])) then
      Result := Result + Round(Power(2, J));
    Inc(J);
  end;
  if S[1] = '1' then
    Result := Result - Round(Power(2, FSizeBits) / 2);
end;

function Int64ToBin(Value: Int64; ASizeBits: TSizeBits): string;
var
  FSizeBits  : Byte;
begin
  Result := '';
  case ASizeBits of
    sb8Bits: FSizeBits := 8;
    sb16Bits: FSizeBits := 16;
    sb32Bits: FSizeBits := 32;
    sb64Bits: FSizeBits := 64;
  end;
  SetLength(Result, FSizeBits);
  while FSizeBits > 0 do
  begin
    if Odd(Value) then
      Result[FSizeBits] := '1'
    else
      Result[FSizeBits] := '0';
    Value := Value shr 1;
    Dec(FSizeBits);
  end;
end;

Pour l'utilisation :
Label1.Caption := IntToStr(BinToInt64('100010011011', sb16Bits));
Résultat BinToInt64 = 2203
Label1.Caption := Int64ToBin(2203, sb16Bits);
Résultat Int64ToBin= 0000100010011011
@+
Cirec 4191 Messages postés vendredi 23 juillet 2004Date d'inscriptionModérateurStatut 12 décembre 2017 Dernière intervention - 20 févr. 2017 à 17:19
Bien vu ;)
Commenter la réponse de Yanb

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.