Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.programmer > #32910
| 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 |
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
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