Convertire bin to decimal

houarihabiba Messages postés 1 Date d'inscription mercredi 15 février 2017 Statut Membre Dernière intervention 17 février 2017 - Modifié par Cirec le 20/02/2017 à 17:36
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 - 20 févr. 2017 à 17:19
Bonjour,
lorsque on convertir un chiffre binaire >12 par exemple 100010011011 cette fonction ne convertir pas????

4 réponses

dubois77 Messages postés 675 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 19 février 2019 14
Modifié par dubois77 le 18/02/2017 à 08:21
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"
0
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 656
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?
0
dubois77 Messages postés 675 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 19 février 2019 14
18 févr. 2017 à 09:21
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
0
dubois77 Messages postés 675 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 19 février 2019 14
18 févr. 2017 à 09:23
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
18 févr. 2017 à 13:16
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"
0
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
@+
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
20 févr. 2017 à 17:19
Bien vu ;)
0
Rejoignez-nous