Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsWhite Papers
Discussion GroupsFirst AidDatabasesJavaBeansGUIJava 3DVirtual MachineCORBASecurityToolsGeneral
Java DirectoryOpen Source ProjectsSample Book ChaptersUser GroupsWeb Resources
Related Topics
Databases.NETMore Topics ...

Java Forum / General / October 2005

Tip: Looking for answers? Try searching our database.

binary array to byte type?

Thread view: 
djbitchpimp@snowboard.com - 03 Oct 2005 07:35 GMT
I am trying to figure out a way to do the following.

I have a int [64] array of 1's and 0's representing a 64-bit number. I
would like to collapse this into a byte [8] array. Does anyone have any
ideas on an easy way to accomplish this?
Roedy Green - 03 Oct 2005 07:45 GMT
>I have a int [64] array of 1's and 0's representing a 64-bit number. I
>would like to collapse this into a byte [8] array. Does anyone have any
>ideas on an easy way to accomplish this?

You need to learn to do bit fiddling.  See
http://mindprod.com/jgloss/binary.html
and
http://mindprod.com/jgloss/masking.html
and chase links.

The way I would handle it is first create a 64 bit long by shifting
left and adding another low order bit in a loop.

When than was done, I would strip off the low order byte, save it, and
shift right 8 bits in a loop.

You need to know the >>> and <<  & | bit operators. See
http://mindprod.com/jgloss/precedence.html

Signature

Canadian Mind Products, Roedy Green.
http://mindprod.com Again taking new Java programming contracts.

djbitchpimp@snowboard.com - 03 Oct 2005 10:02 GMT
OK I tried this:

int byteVal = 0 ;
        int temp = 0 ;
        byteVal = encryptedInt[0] & 0x1 ;
        byteVal <<= 7 ;
        for (i = 7; i > 0; i--) {

            temp = encryptedInt [8 - i] & 0x1 ;
            //System.out.print ("Bit " + (8 - i) + " " + temp + " ") ;
            temp <<= i - 1 ;
            //System.out.println (temp) ;
            byteVal = byteVal | temp ;
            //System.out.println (byteVal) ;
        }

        // byteval has the value of the byte
        byte test1 = 0 ;
        test1 = (byte) test1 | byteVal ;

But it will not let me cast it back to a byte! How can I get this
information into a byte type?
Roedy Green - 03 Oct 2005 10:12 GMT
>        test1 = (byte) test1 | byteVal ;
>
>But it will not let me cast it back to a byte!

Your problem is precedence. just what do you think you are casting?
when in doubt add ().
Signature

Canadian Mind Products, Roedy Green.
http://mindprod.com Again taking new Java programming contracts.

Thomas Fritsch - 03 Oct 2005 17:58 GMT
> OK I tried this:
>
> int byteVal = 0 ;
[...]
> // byteval has the value of the byte
> byte test1 = 0 ;
> test1 = (byte) test1 | byteVal ;
Because you didn't give parentheses, the compiler interpreted it according
to the precedence rules, which is:
   test1 = ((byte) test1) | byteVal;
You want:
   test1 = (byte) (test1 | byteVal);

> But it will not let me cast it back to a byte! How can I get this
> information into a byte type?
>
Signature

"TFritsch$t-online:de".replace(':','.').replace('$','@')

Andrey Kuznetsov - 03 Oct 2005 17:53 GMT
> I have a int [64] array of 1's and 0's representing a 64-bit number. I
> would like to collapse this into a byte [8] array. Does anyone have any
> ideas on an easy way to accomplish this?

see http://uio.imagero.com

with Unified I/O you could make something like this:

public byte [] pack(int [] num) throws IOException {
   ByteArrayOutputStream out = new ByteArrayOutputStream();
   BitOutputStream bitOut = new BitOutputStream(out);
   bitOut.setBitsToWrite(1);
   RandomAccessRO ro = RandomAccessFactory.createBuffered(num);
   for(int i = 0; i < num.length; i++) {
       int a = ro.read();
       bitOut.write(a);
   }
   bitOut.flush();
   bitOut.close();
   return out.toByteArray();
}

Signature

Andrey Kuznetsov
http://uio.imagero.com Unified I/O for Java
http://reader.imagero.com Java image reader
http://jgui.imagero.com Java GUI components and utilities

djbitchpimp@snowboard.com - 03 Oct 2005 17:58 GMT
How can I import the libraries for BitOutputStream  using eclipse?
Andrey Kuznetsov - 03 Oct 2005 18:48 GMT
> How can I import the libraries for BitOutputStream  using eclipse?
just download uio.jar -  http://uio.imagero.com/download/uio.jar
and include it in classpath (or whatever you should do with eclipse - I
never used it - cos I have IntelliJ IDEA).

Signature

Andrey Kuznetsov
http://uio.imagero.com Unified I/O for Java
http://reader.imagero.com Java image reader
http://jgui.imagero.com Java GUI components and utilities

Roedy Green - 04 Oct 2005 10:14 GMT
>> How can I import the libraries for BitOutputStream  using eclipse?
>just download uio.jar -  http://uio.imagero.com/download/uio.jar

Questions:  I am being bit of a shill here, but you too have
recognised the chaos in Java's i/o libraries and you too have done
something concrete to remedy the situation.

So some questions about imagero Unified IO.

1. how big is the jar?

2. how much does it cost?

3. what are the restrcitions on using it in my own apps?

4. where can I see the JavaDoc to get a flavour of how it works?

5. where can I see some sample code?

6. how fast is it compared with the Sun classes?

7. Did you do anything to make it more consistent which methods throw
an IOException?
Signature

Canadian Mind Products, Roedy Green.
http://mindprod.com Again taking new Java programming contracts.

Andrey Kuznetsov - 04 Oct 2005 16:16 GMT
> Questions:  I am being bit of a shill here, but you too have
> recognised the chaos in Java's i/o libraries and you too have done
[quoted text clipped - 3 lines]
>
> 1. how big is the jar?
~120 kb

> 2. how much does it cost?
nothing

> 3. what are the restrcitions on using it in my own apps?
it is under BSD

> 4. where can I see the JavaDoc to get a flavour of how it works?
http://uio.imagero.com/doc/

> 5. where can I see some sample code?
Sorry, I didn't published any examples jet. Just ask me.

> 6. how fast is it compared with the Sun classes?
it depends on how you use sun classes.
In worst case (repeat readInt()/writeInt()) you have 100/120 times speed
gain.
See http://uio.imagero.com/performance.html

> 7. Did you do anything to make it more consistent which methods throw
> an IOException?
please elaborate

BTW uio includes also many utilities like MemoryManager and OpenFileManager.

Signature

Andrey Kuznetsov
http://uio.imagero.com Unified I/O for Java
http://reader.imagero.com Java image reader
http://jgui.imagero.com Java GUI components and utilities

Roedy Green - 04 Oct 2005 19:29 GMT
>Sorry, I didn't published any examples jet. Just ask me.

This is probably what you need to get it to catch on.  The learning
curve is too steep otherwise, no matter how simple it actually is.

Sun has  little tutorials for all the Swing components. When you read
them first, the JavaDoc suddenly comes to life and seems 100 times
simpler.
Signature

Canadian Mind Products, Roedy Green.
http://mindprod.com Again taking new Java programming contracts.

Andrey Kuznetsov - 04 Oct 2005 20:49 GMT
> This is probably what you need to get it to catch on.  The learning
> curve is too steep otherwise, no matter how simple it actually is.

Interface of uio is rougly same as of RandomAccessFile.

Important thing is RandomAccessFactory.
RandomAccessFactory has 6 methods:

RandomAccess create()
RandomAccessRO createRO()

RandomAccessBuffer createBuffered()
RandomAccessBufferRO createBufferedRO()

RandomAccessByteArray create()
RandomAccessByteArrayRO createRO()

You can also read from/write to primitive arrays.
readFully(int [] a, int offset, int length)
write(double [] d, int offset, int length)

Signature

Andrey Kuznetsov
http://uio.imagero.com Unified I/O for Java
http://reader.imagero.com Java image reader
http://jgui.imagero.com Java GUI components and utilities

Roedy Green - 04 Oct 2005 19:31 GMT
>> 7. Did you do anything to make it more consistent which methods throw
>> an IOException?
>please elaborate
It is just that read/close seemingly randomly either throw or do not
throw an IOException. IT is difficult to memorise the pattern.  I
figured you might do your class so they always do, even if they in
practice never throw it. That leaves the door open to in future
without changing client code.
Signature

Canadian Mind Products, Roedy Green.
http://mindprod.com Again taking new Java programming contracts.

Andrey Kuznetsov - 04 Oct 2005 20:54 GMT
>>> 7. Did you do anything to make it more consistent which methods throw
>>> an IOException?
[quoted text clipped - 4 lines]
> practice never throw it. That leaves the door open to in future
> without changing client code.

IOutils contains method closeStream() which
a) does not throws IOException
b) does not throws NullPointerException - i.e. given Stream may be null.

read always declared "throws IOException"

Signature

Andrey Kuznetsov
http://uio.imagero.com Unified I/O for Java
http://reader.imagero.com Java image reader
http://jgui.imagero.com Java GUI components and utilities

Roedy Green - 04 Oct 2005 19:49 GMT
>See http://uio.imagero.com/performance.html

This page is very confusing.  I suggest you redo it as a table, and
perhaps normalize the figures, with an note that either bigger or
smaller is better.

If you have the patience, present the benchmarks  in graph form for
more punch.

Also try to give each benchmark a name that does not require you to
know uio to know what it signifies.

I have updated the uio entry at
http://mindprod.com/jgloss/unfiedio.html
Signature

Canadian Mind Products, Roedy Green.
http://mindprod.com Again taking new Java programming contracts.

Andrey Kuznetsov - 04 Oct 2005 20:57 GMT
> This page is very confusing.  I suggest you redo it as a table, and
> perhaps normalize the figures, with an note that either bigger or
[quoted text clipped - 5 lines]
> Also try to give each benchmark a name that does not require you to
> know uio to know what it signifies.

if I have time someday...

> I have updated the uio entry at
> http://mindprod.com/jgloss/unfiedio.html

thanks
http://mindprod.com/jgloss/unifiedio.html

Signature

Andrey Kuznetsov
http://uio.imagero.com Unified I/O for Java
http://reader.imagero.com Java image reader
http://jgui.imagero.com Java GUI components and utilities

Roedy Green - 04 Oct 2005 09:55 GMT
>How can I import the libraries for BitOutputStream  using eclipse?
click on properties for your project |  Java Build Path | Libraries.
Signature

Canadian Mind Products, Roedy Green.
http://mindprod.com Again taking new Java programming contracts.



Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.