binary sayılar

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
fth_murat
Üye
Mesajlar: 17
Kayıt: 25 Nis 2006 03:08
Konum: ankara

binary sayılar

Mesaj gönderen fth_murat »

edit elemanına yazdığım bir sayıyı(birler ve sıfırlardan oluşan) ikilik tabanda algılanmasını nasıl sağlarım...
Kullanıcı avatarı
fatihtolgaata
Üye
Mesajlar: 382
Kayıt: 04 Mar 2004 09:46
Konum: K.çekmece / İstanbul
İletişim:

Mesaj gönderen fatihtolgaata »

Algılamadan kastın sadece 1 ve 0 mı yazmasını istiyorsun yoksa, girilen 1 ve 0'ları dec ya da hex mi yapmak istiyorsun?
mancho_67
Üye
Mesajlar: 15
Kayıt: 29 Ara 2006 11:46
Konum: Konya

Re: binary sayılar

Mesaj gönderen mancho_67 »

fth_murat yazdı:edit elemanına yazdığım bir sayıyı(birler ve sıfırlardan oluşan) ikilik tabanda algılanmasını nasıl sağlarım...
selam arkadaşlar.
benim de böyle bir problemim var edite gireceğim veriler 1 ve 0 lardan oluşmakta bunları hexe çevirmem lazım ama henüz bunu başarabilmiş değilim. yeni konu açmadım çünkü bu problem daha önce belirtilmiş. yardımlarınızı bekliyorum arkadaşlar çünkü artık düşünemez oldum ya :shock:
Kullanıcı avatarı
fatihtolgaata
Üye
Mesajlar: 382
Kayıt: 04 Mar 2004 09:46
Konum: K.çekmece / İstanbul
İletişim:

Mesaj gönderen fatihtolgaata »

Denemeden yazıyorum. Hatalar olabilir. Algoritma verimli de olmayabilir. Sadece mantığını göstermek için veriyorum. Aşağıdaki fonksiyonda BinaryText parametresinin sadece 1 ve 0'larda oluşmuş olması size kalmış.

Kod: Tümünü seç

function BinaryToHex(BinaryText: string): string;
const
  HexVals: array[0..15, 0..1] of string = (
    ('0000', '0'), ('0001', '1'), ('0010', '2'), ('0011', '3'), ('0100', '4'), 
    ('0101', '5'), ('0110', '6'), ('0111', '7'), ('1000', '8'), ('1001', '9'), 
    ('1010', 'A'), ('1011', 'B'), ('1100', 'C'), ('1101', 'D'), ('1110', 'E'), 
    ('1111', 'F')
  );
var
  Dortlu: string;
  Basamak, i: Integer;
begin
  Result:='';

  Basamak := Length(BinaryText);
  //Basamak 4'ün katı değilse diye başına 0 ekleriz. Çünkü ileride 4 haneli şekilde çevirme yapacaz.
  BinaryText := DupeString('0', Basamak mod 4) + BinaryText;

  while Length(BinaryText) > 0 do
  begin
    Dortlu := Copy(BinaryText, Length(BinaryText) - 3,  4);
    Delete(BinaryText, Length(BinaryText) - 3, 4);
    for i:=1 to 16 do
      if Dortlu = HexVals[i - 1, 0] then
        Result := HexVals[i - 1, 1] + Result;
  end;
end;
Cevapla