Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.help > #1583
| From | Lew <lewbloch@gmail.com> |
|---|---|
| Newsgroups | comp.lang.java.help |
| Subject | Re: Help with BCD conversion |
| Date | 2012-02-18 10:25 -0800 |
| Organization | http://groups.google.com |
| Message-ID | <31483437.61.1329589551120.JavaMail.geo-discussion-forums@pbcr5> (permalink) |
| References | <92b642e7-0aa8-4e1a-9e4e-9418bfcc8123@k40g2000yqf.googlegroups.com> <8motj7ljbcapmd0i3kho2g7een4egail5m@4ax.com> <dfa613af-0f14-4d65-b12c-a6a119138e26@x19g2000yqh.googlegroups.com> <jhojbr$mql$1@dont-email.me> <5dlvj79ek56vcmqthh0cudaub6hhc78tsn@4ax.com> |
Roedy Green wrote: > The original IBM 360 style packed two decimal digits per nibble into > an 8 bit byte. It was stored big-endian. The last nibble encoded the That's BCD packed. There's also BCD unpacked. > sign, using one of the hex digits A-F. A, C, E, and F indicate > positive values, and B and D indicate negative values. Seems to me C, > D and F were preferred. > > IIRC there was no explicit length encoding. That was either > determined in the instruction code or by banging into the sign nibble. There's no explicit length encoding in Java's 'BigDecimal' either. There's no reason to expect one. > If there were an even number of digits, it was padded out with a left > zero. > > OP wants to simulate this on Java without the sign. It could be done > with a String, left zero padded to an even number of digits, which is > a trivial problem. It could be done with a byte array, two digits per > byte. The end result could be an int or long. You could start with a > String, int or long. I wanted OP to be aware of the possible choices > and pick the best for his purposes before nailing down code. > > This nibble packing is very similar to converting a Hex string to an > int. > > The core packing code is something like this > int lowNibble = ... > int highNibble = ... > int combinedbyte = highNibble << 8 | lowNibble; > > You probably don't want to use the byte type because it sign extends. > I have yet to find a need for signed bytes. I wish Java had made > bytes unsigned. It would have saved so many hair follicles. That's not a reason not to use the byte type. You just have to compensate for it. Don't throw the baby out with the bath water. > The code OP presented with case clauses is fundamentally incorrect in > that it treats each of the cases as different. They are not, and > should be handled by the same code.I think that is mainly why everyone > has been reluctant to delve into it. Amen to that. -- Lew
Back to comp.lang.java.help | Previous | Next — Previous in thread | Next in thread | Find similar
Help with BCD conversion HarishD <harishdeshpande@gmail.com> - 2012-02-17 15:21 -0800
Re: Help with BCD conversion Roedy Green <see_website@mindprod.com.invalid> - 2012-02-17 15:33 -0800
Re: Help with BCD conversion HarishD <harishdeshpande@gmail.com> - 2012-02-17 15:39 -0800
Re: Help with BCD conversion HarishD <harishdeshpande@gmail.com> - 2012-02-17 15:47 -0800
Re: Help with BCD conversion markspace <-@.> - 2012-02-18 08:24 -0800
Re: Help with BCD conversion Roedy Green <see_website@mindprod.com.invalid> - 2012-02-18 09:06 -0800
Re: Help with BCD conversion Lew <lewbloch@gmail.com> - 2012-02-18 10:25 -0800
Re: Help with BCD conversion HarishD <harishdeshpande@gmail.com> - 2012-02-20 06:35 -0800
Re: Help with BCD conversion Lew <noone@lewscanon.com> - 2012-02-20 11:52 -0800
Re: Help with BCD conversion Lew <lewbloch@gmail.com> - 2012-02-18 10:21 -0800
csiph-web