tech-userlevel archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: Fixing lint warnings
> Consider the following:
> byte[0] = foo;
> byte[1] = foo >>= 8;
> byte[2] = foo >>= 8;
> byte[3] = foo >> 8;
> which quite unambiguously convers a value to little-endian bytes. It
> doesn't need any casts, nor any explict '& 0xff';
This is true only for 8-bit bytes. We don't have anything else at
present, but (a) not all code is NetBSD-only and (b) I keep hearing of
efforts to create NetBSD/pdp10, which I would expect to have 9-bit
bytes...in which case you'd need to either (a) s/8/9/ (or perhaps
better s/8/CHAR_BIT/) if you want to convert to bytes or add &0xff if
you want to covert to octets. (Unless, I suppose, you want octets and
whatever will be using byte[] doesn't care about bits above 0x80.) And
it wouldn't surprise me if char went 16-bit even on todayish hardware
within the moderately foreseeable future.
Of course, there's also the issue of assuming that foo's value can be
stored in no more than four (bytes|octets), but that's separate.
Such future-proofing isn't worth doing in all cases. But it should at
least get a little thought, I think.
/~\ The ASCII Mouse
\ / Ribbon Campaign
X Against HTML mouse%rodents-montreal.org@localhost
/ \ Email! 7D C8 61 52 5D E7 2D 39 4E F1 31 3E E8 B3 27 4B
Home |
Main Index |
Thread Index |
Old Index