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


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

Re: number to byte[]

From Kevin McMurtrie <mcmurtrie@pixelmemory.us>
Newsgroups comp.lang.java.programmer
Subject Re: number to byte[]
References <mvsv9r$ohb$1@ls237.t-com.hr> <mvtd9u$c4m$1@dont-email.me> <mvud46$eat$1@ls237.t-com.hr> <d8jsa9Fi4ifU1@mid.individual.net>
Date 2015-10-20 13:35 -0700
Message-ID <mcmurtrie-869DC9.13350820102015@news.sonic.net> (permalink)
Organization Sonic.Net

Show all headers | View raw


In article <d8jsa9Fi4ifU1@mid.individual.net>,
 Nigel Wade <nmw@ion.le.ac.uk> wrote:

> On 17/10/15 22:03, Askfor wrote:
> > 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.
> 
> int is signed, as are all Java integers.
> int won't hold a 32bit unsigned integer.
> 
> It will hold a 4-byte value as long as you don't attempt to interpret that 
> value as a number, for example by performing 
> any arithmetic on the value. If the MSB of the MSbyte is 1, it will be 
> interpreted as being a negative number. Don't 
> forget that byte is also signed, so the MSbyte would also be negative.
> If you need a 32bit unsigned value then you must promote it to 64bit, without 
> sign extension.
> 
> Of course, you could write your own UnsignedInteger class, with appropriate 
> storage, and input/output methods.
> In the long run it might cause you the least surprises.
> 
> For storing/retrieving values in byte[] arrays ByteBuffer is one way to go.

Only multiplication, division, and sign extension will damage an 
unsigned number.  Comparison doesn't work.  Addition, subtraction, and 
serialization don't matter in Java. (In assembly they toggle 
underflow/overflow flags differently)

Special unsigned operations can be performed by expansion to long and 
truncating the sign extension.  It's only tricky when you need to 
multiply, divide, and compare unsigned longs.

-- 
I will not see posts from astraweb, theremailer, dizum, or google
because they host Usenet flooders.

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