Anlaşılır olması için bazı sayıları binary olarak yazmak istiyorum.
hex 100 değerini Delphide $100 olarak yazabiliyoruz.
Peki 4 rakamını binary olarak 0100 şeklinde nasıl yazarım?
https://github.com/AppoPro/Delphi-Binary-Converter
Projeyi inceleyin
Sorumla alakası yok.
var a:integer;
şeklinde tanımlı değişkene aşağıdaki gibi yada her nasılsa binary değer yazmayı soruyorum. Syntaxı nasıl onu soruyorum.
a:=b0100001011;
Eğer hex değer atmak isteseydik
a:=$100 yazıyorduk.
Binary nasıl yazılıyor onu soruyorum.
C'de de olmuyor ama #define ile bütün ihtimalleri tanımlayarak olabilir.
örn:
#define 0b10101010 0xAA
%10001110 dener misin?
bildiğim kadarıyla öyle bir gösterim yok delphi'de anca bir obje oluşturularak yapılabilir. Değer binary girilir sonuc prosedürü sonucu integer olarak verir.
Program yazarken bit deseni göz önünde olsun istiyordum. Neyse const ile hallettim.
function HexToBin(Hexadecimal: string): string;
const
BCD: array [0..15] of string =
('0000', '0001', '0010', '0011', '0100', '0101', '0110', '0111',
'1000', '1001', '1010', '1011', '1100', '1101', '1110', '1111');
var
i: integer;
begin
for i := Length(Hexadecimal) downto 1 do
Result := BCD[StrToInt('$' + Hexadecimal)] + Result;
end;
ShowMessage(HexToBin('FCD1'));
işinizi görür zaten delphinin hazır fonksiyonuda aşağı yukarı aynı işi yapıyor
onunkide bu
function HexToBin(Text, Buffer: PChar; BufSize: Integer): Integer; assembler;
const
Convert: array['0'..'f'] of SmallInt =
( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,-1,-1,-1,-1,-1,-1,
-1,10,11,12,13,14,15,-1,-1,-1,-1,-1,-1,-1,-1,-1,
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
-1,10,11,12,13,14,15);
var
I: Integer;
begin
I := BufSize;
while I > 0 do
begin
if not (Text[0] in ['0'..'f']) or not (Text[1] in ['0'..'f']) then Break;
Buffer[0] := Char((Convert[Text[0]] shl 4) + Convert[Text[1]]);
Inc(Buffer);
Inc(Text, 2);
Dec(I);
end;
Result := BufSize - I;
end;
soruyu yanlış anladım sanırım siz değer atamayı sormuşsunuz bildiğim kadarıyla kısa bir yolu yok bu işin yine yukarıdaki gibi bir function ile ali cengiz yapmanız gerekiyor.Delphinin kendi function nı var bintohex diye yine onlarda aynı işi yapmış girilen karakterleri toplayıp hex oluşturmuş.
Çözümün tam olarak nedir?
Ben oluyor diye hatırlıyorum. Sanırım yanlış hatırlıyorum.
Function BIN(deger : integer) : integer; olarak ufak bir fonksiyon yazarak ta çözülebilir. Çağrılırken int3 := bin(10011101); olarak çağrılabilir.
function BinToInt(Value: string): Integer;
var
i, iValueSize: Integer;
begin
Result := 0;
iValueSize := Length(Value);
for i := iValueSize downto 1 do
if Value = '1' then Result := Result + (1 shl (iValueSize - i));
end;
//------------------------------------
a:=(BinToInt('101111011')); ancak bu şekilde olabilir doğrudan dediğiniz gibi bişey yok diye biliyorum delphinin kendi fonksiyonların dan da buna bakabilirsiniz.