From: Erik Max Francis Newsgroups: comp.os.msdos.djgpp Subject: Re: Q: How to get an integer from a char table? Date: Wed, 28 May 1997 17:56:46 -0700 Organization: Alcyone Systems Message-ID: <338CD44E.C4AB5CE@alcyone.com> References: <338b5879 DOT 5940154 AT news DOT abo DOT fi> NNTP-Posting-Host: newton.alcyone.com Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Lines: 37 To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Precedence: bulk bhallstr AT abo DOT fi wrote: > I've made a table namned "foobar" (unsigned char *foobar) and > a neat variable named "x" (unsigned int x). Then I've loaded some data > into the table ( of course after mallocating it) Now I want to get a > 16bit value from the 8bit table to my variable "x". How do I do this? > x=foobar[10] does not seem to do it. Depends on just what you mean. First, under DJGPP, an int is 32 bits, not 16; you'd want a 16-bit unsigned short. If you want it to be an unsigned short array, you should have created it as unsigned short *foobar, not unsigned char *foobar. If you want the unsigned short to contain the unsigned char at foobar[10] and in foobar[11], then you could use unsigned short x = *(unsigned short *) (foobar + 10); However, this brings into question the byte-ordering (high endian or low endian) of an int on your system. If the byte ordering is important (which it must be, otherwise you likely wouldn't be doing this), then you should add them manually, such as unsigned short x = (foobar[10] << 8)|foobar[11]; or unsigned short x = (foobar[11] << 8)|foobar[10]; depending on the ordering you desire. -- Erik Max Francis, &tSftDotIotE / email / max AT alcyone DOT com Alcyone Systems / web / http://www.alcyone.com/max/ San Jose, California, United States / icbm / 37 20 07 N 121 53 38 W \ "Covenants without the sword / are but words." / Camden