Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #38029

Re: bit package

From Eric Sosman <esosman@comcast-dot-net.invalid>
Newsgroups comp.lang.java.programmer
Subject Re: bit package
Date 2018-02-17 08:16 -0500
Organization A noiseless patient Spider
Message-ID <p69a02$kg5$1@dont-email.me> (permalink)
References <bebd1080-35be-485d-ac9d-f7e2d4b361da@googlegroups.com> <p696af$tiv$1@dont-email.me> <p697s2$4go$1@news.albasani.net>

Show all headers | View raw


On 2/17/2018 7:40 AM, Kiwi User wrote:
> On Sat, 17 Feb 2018 07:14:05 -0500, Eric Sosman wrote:
> 
>> On 2/17/2018 3:33 AM, Philipp Kraus wrote:
>>> Hello,
>>>
>>> I'm building a network communication protocol for
>>> hardware-communication, so I need a bit representation of my dara like
>>> a C struct:
>>>
>>> struct {
>>>       unint8 field1; unint16 field2;
>>> ...
>>> }
>>
>>       Aside: This approach won't always work, not even in C.  (Think
>> padding bytes, endianness, ...)
>>
>>> On my Java classes I have got int, long, ... so how can I create such
>>> bit structures?
>>> My first try is to use a BitSet and convert all datatypes manually, but
>>> is there a better possibility to create such bit sequences. I need a
>>> sending and receiving structure. I'm working with Java 9.
>>>
>>> I the best case I create an object like
>>>
>>> BitObject l_obj = new BitObject( 8, 16, 8, 32 );
>>> l_object.set(0, mybyte)
>>> l_object.set(1, myshort)
>>> l_object.set(2, mybyte)
>>> l_object.set(3,  myint)
>>>
>>> and on reseiving
>>>
>>> BitObject l_obj = new BitObject( mybytearray_from_socket, 8, 16, 8, 32
>>> );
>>> l_obj.get(0)
>>> l_obj.get(1)
>>> ...
>>>
>>> Can you suggest a library or anything for doing this?
>>
>>       It's not clear to me precisely what you're trying to do (the
>> semantics of l_object.set() are not obvious), but I think you might find
>> java.nio.ByteBuffer a good starting place.
> 
> The BitSet class looks fairly straight forward and is explicitly little
> endian.

     Could you elaborate on what you mean by "explicitly little endian?"
I see no guarantee in the Javadoc about how the bits are stored, and
nothing at all about how one would marshal them for I/O.

> I can't comment on BitObject because I'm using OpenJava 8, the current
> version for RedHat Fedora 27. This doesn't provide a BitObject class.

     There's no BitObject in Java 9, either.  I imagine the O.P. simply
used a made-up class name to flesh out the example.

-- 
esosman@comcast-dot-net.invalid
One thousand sixty-eight days to go.

Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

bit package Philipp Kraus <philipp.kraus.flashpixx@gmail.com> - 2018-02-17 00:33 -0800
  Re: bit package Eric Sosman <esosman@comcast-dot-net.invalid> - 2018-02-17 07:14 -0500
    Re: bit package Kiwi User <martin@mydomain.invalid> - 2018-02-17 12:40 +0000
      Re: bit package Eric Sosman <esosman@comcast-dot-net.invalid> - 2018-02-17 08:16 -0500
    Re: bit package Philipp Kraus <philipp.kraus.flashpixx@gmail.com> - 2018-02-17 07:51 -0800
      Re: bit package Arne Vajhøj <arne@vajhoej.dk> - 2018-02-17 11:11 -0500
        Re: bit package Philipp Kraus <philipp.kraus.flashpixx@gmail.com> - 2018-02-17 11:41 -0800
          Re: bit package Arne Vajhøj <arne@vajhoej.dk> - 2018-02-17 14:55 -0500
      Re: bit package Eric Sosman <esosman@comcast-dot-net.invalid> - 2018-02-17 11:12 -0500
        Re: bit package Arne Vajhøj <arne@vajhoej.dk> - 2018-02-17 12:27 -0500
      Re: bit package Daniele Futtorovic <da.futt.news@laposte.net> - 2018-02-17 20:55 +0100
  Re: bit package Robert Klemme <shortcutter@googlemail.com> - 2018-02-17 16:23 +0100
  Re: bit package Arne Vajhøj <arne@vajhoej.dk> - 2018-02-17 10:25 -0500

csiph-web