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


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

Re: number to byte[]

From Askfor <askfor@nowhere.net>
Newsgroups comp.lang.java.programmer
Subject Re: number to byte[]
Date 2015-10-18 12:44 +0200
Organization T-Com
Message-ID <mvvt62$4ot$1@ls237.t-com.hr> (permalink)
References <mvsv9r$ohb$1@ls237.t-com.hr> <mvtd9u$c4m$1@dont-email.me> <mvud46$eat$1@ls237.t-com.hr> <mvufdc$cih$1@dont-email.me> <mvvrbe$3uf$1@ls237.t-com.hr>

Show all headers | View raw


On 10/18/2015 12:13 PM, Askfor wrote:
> On 10/17/2015 11:45 PM, Eric Sosman wrote:
>> On 10/17/2015 5:03 PM, Askfor wrote:
>>> On 10/17/2015 02:03 PM, Eric Sosman wrote:
>>>> On 10/17/2015 4:02 AM, Askfor wrote:
>>>>> I am trying to get 4 byte[] representation of an integer, which
>>>>> might be
>>>>> 32 bit long.
>>>>>
>>>>> Obviously, I could AND with 255 and take byteValue(), then shift 8
>>>>> times
>>>>> to the right and repeat the process 3 times. Is there any more elegant
>>>>> way ?
>>>>
>>>>      I can't think of one, off-hand.
>>>>
>>>>      But *why* do you want this four-byte array?  Are you planning to
>>>> write it to some output destination?  If so, perhaps you should use a
>>>> DataOutputStream (or other DataOutput implementation) and call its
>>>> writeInt() method.  Or, perhaps you should use an IntBuffer.  What
>>>> are you trying to do?
>>>>
>>>
>>> It is going to be a part of a data header, which needs to be of fixed
>>> length. Also it will contain a value of an offset which cabn't be longer
>>> than 32-bits. So, I don't care how big int actually is, as long as it is
>>> big enough to hold 32 bit unsigned value.
>>
>>      It's probably simplest just to read and write the int directly,
>> letting the stream (or buffer) take care of assembling and disassembling
>> the bytes.  Classes that implement DataOutput and DataInput already have
>> the necessary machinery, provided you want BigEndian byte order.  If you
>> need LittleEndian, I think you can manage it with a Buffer.
>>
>>      (I didn't mention it before, but RandomAccessFile can also read and
>> write BigEndian integers.)
>>
>>> I started with serialization, too, but I realized it won't work.
>>
>>      I didn't suggest serialization.  Perhaps you've confused DataOutput
>> with ObjectOutput; they are not the same.
>>
>
> I understand that, but then I will have to what the int is 32 bit. I am
> not sure that int is 32-bit on all platforms and all VM's . I need
> exactly 4 bytes to be written and read. Endian-ness wouldn't matter if
> I could only be sure that int is 32-bit always. Java tutorial at
> Oracle's site says that int is 32-bi 'by default', which I understand
> as 'unless someone has different implementation'.
>
>
The same source states firmly that writeInt methods write 4 bytes, 
always... I think I am going to isolate it in a separate method, so if
any VM proves to be different, I am going to modify the method.

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


Thread

number to byte[] Askfor <askfor@nowhere.net> - 2015-10-17 10:02 +0200
  Re: number to byte[] Eric Sosman <esosman@comcast-dot-net.invalid> - 2015-10-17 08:03 -0400
    Re: number to byte[] Askfor <askfor@nowhere.net> - 2015-10-17 23:03 +0200
      Re: number to byte[] Eric Sosman <esosman@comcast-dot-net.invalid> - 2015-10-17 17:45 -0400
        Re: number to byte[] Askfor <askfor@nowhere.net> - 2015-10-18 12:13 +0200
          Re: number to byte[] Askfor <askfor@nowhere.net> - 2015-10-18 12:44 +0200
            Re: number to byte[] Lew <lewbloch@gmail.com> - 2015-11-29 23:07 -0800
          Re: number to byte[] Eric Sosman <esosman@comcast-dot-net.invalid> - 2015-10-18 08:40 -0400
      Re: number to byte[] Nigel Wade <nmw@ion.le.ac.uk> - 2015-10-19 10:43 +0100
        Re: number to byte[] Wayne <nospam@all.invalid> - 2015-10-20 00:45 -0400
        Re: number to byte[] Kevin McMurtrie <mcmurtrie@pixelmemory.us> - 2015-10-20 13:35 -0700
  Re: number to byte[] Lothar Kimmeringer <news200709@kimmeringer.de> - 2015-10-25 10:22 +0100

csiph-web