Solved

# Binary notation

Posted on 2001-09-12
245 Views
How do I express value as binary? I thought it was %00000001 (for 1) but it's not!

var i: byte;

i := ....

0
Question by:pede
• 2
• 2
• 2
• +2

LVL 1

Expert Comment

ID: 6477359
This function :

function ByteToBin(aByte: Byte): string;
var liCount : integer;
begin
Result := '';
for liCount := 0 to 7 do
begin
if aByte and 1 <> 0 then
Result := '1' + Result
else
Result := '0' + Result;
aByte := aByte shr 1;
end;
end;

Will result '0000001' if you call

showMessage(ByteToBin(1));

Is that what you looked for?

Marcel
0

LVL 1

Expert Comment

ID: 6477362
Or the other way around:

function BinToByte(aString: string): byte;
var liCount : integer; i : double;
begin
Result      := 0;
for liCount := 1 to Length(aString) do
begin
Result := Result shl 1;
if aString[liCount] <> '0' then
Inc(Result);
end;
end;

Marcel (Holland)
0

LVL 6

Accepted Solution

edey earned 25 total points
ID: 6477421
the environment doesn't support refrencing constants in binary directly, though you cant do something like this:

var
tmp : integer;
begin
asm
mov tmp,00000001b
end;
caption := intToStr(tmp);

GL
Mike
0

LVL 2

Expert Comment

ID: 6478766
Hi,
one more functions...

Function ByteToBit(b : byte) : String;
Var
z : byte;
Begin
Result := '';
For z := 1 to 8 do
Begin
IF b AND 128 = 128 then Result := Result + '1'
else Result := Result + '0';
b := b SHL 1;
End;
End;

Function WordToBit(w : word) : string;
Var
z : byte;
Begin
Result := '';
For z := 1 to 16 do
Begin
IF w AND 32768 = 32768 then Result := Result + '1'
else Result := Result + '0';
w := w SHL 1;
End;
End;

Function DWordToBit(d : dword) : string;
Var
z : byte;
Begin
Result := '';
For z := 1 to 32 do
Begin
IF d AND \$80000000 = \$80000000 then Result := Result + '1'
else Result := Result + '0';
d := d SHL 1;
End;
End;

Function BitsToInt(s : string) : Integer;
Var
z : byte;
Begin
Result := 0;
For z := 1 to Length(s) do
Begin
IF s[z] = '1' then Result := Result +1;
IF z <> Length(s) then Result  :=  Result  SHL 1;
End;
End;
0

Expert Comment

ID: 6478887
Not prety but it works

...
function bStr2Int(bs : String):Int64;
begin
result := 0;
while length(bs) > 0 do begin
result := 2*result;
if bs[1]='1' then result := result + 1;
bs := copy(bs,2,length(bs));
end;
end;
...
i := bStr2Int('0000001101');  // 13
...

bullen
0

LVL 1

Author Comment

ID: 6479500
>the environment doesn't support refrencing constants in binary directly
Though I HATE the answer, this was what I was looking for.
0

LVL 6

Expert Comment

ID: 6480135
Glad to be of service, though i too wish there were a better solution.  You could go with some sort of string manipulation, as mentioned above, but you take a huge performance hit if you have to do it often :(

GL
Mike
0

LVL 1

Author Comment

ID: 6480156
I got over it ;o) I could have made the string conversions at startup, but string manipulation was simply too ugly for me, so I just made it in a completely different way.

Thanks for the comments.
0

## Join & Write a Comment Already a member? Login.

The uses clause is one of those things that just tends to grow and grow. Most of the time this is in the main form, as it's from this form that all others are called. If you have a big application (including many forms), the uses clause in the in…
In my programming career I have only very rarely run into situations where operator overloading would be of any use in my work.  Normally those situations involved math with either overly large numbers (hundreds of thousands of digits or accuracy re…
It is a freely distributed piece of software for such tasks as photo retouching, image composition and image authoring. It works on many operating systems, in many languages.
Illustrator's Shape Builder tool will let you combine shapes visually and interactively. This video shows the Mac version, but the tool works the same way in Windows. To follow along with this video, you can draw your own shapes or download the file…

#### 708 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

#### Need Help in Real-Time?

Connect with top rated Experts

19 Experts available now in Live!