| www.delorie.com/archives/browse.cgi | search |
| From: | Chris Holmes <cholmes AT surfsouth DOT com> |
| Newsgroups: | comp.os.msdos.djgpp |
| Subject: | Re: From Bytes to Int and Char |
| Date: | Fri, 13 Aug 1999 23:17:37 -0400 |
| Organization: | Georgia Institute of Technology, Atlanta GA, USA |
| Lines: | 34 |
| Message-ID: | <37B4DFD1.4D66@surfsouth.com> |
| References: | <rfXs3.4$bZ1 DOT 1603 AT typhoon01 DOT swbell DOT net> <37B466D7 DOT 958F09E5 AT americasm01 DOT nt DOT com> |
| NNTP-Posting-Host: | r33h43.res.gatech.edu |
| Mime-Version: | 1.0 |
| X-Trace: | news-int.gatech.edu 934601297 16174 128.61.33.43 (14 Aug 1999 03:28:17 GMT) |
| X-Complaints-To: | usenet AT news DOT gatech DOT edu |
| NNTP-Posting-Date: | 14 Aug 1999 03:28:17 GMT |
| X-Mailer: | Mozilla 3.04Gold (Win95; I) |
| To: | djgpp AT delorie DOT com |
| DJ-Gateway: | from newsgroup comp.os.msdos.djgpp |
| Reply-To: | djgpp AT delorie DOT com |
Campbell, Rolf [SKY:1U32:EXCH] wrote: > > Nick wrote: > > > I am trying to load some data from a files, the 6 and 7th bytes are an > > Integer and so are the 11th and 12th. How do I make them into an INT? This > > is what I used earlier > > > > char ver, type; > > int sz, tz; > > > > sz = file_buffer[6] + file_buffer[7]; > > is that right? > > No. Here's the right way to do it. This code is not edian safe. > > sz = *(short*)(file_buffer+6); (sorry... have to say it) They aren't endians, they're native arrangements. Please, be PC with your PC. <grin> One solution (kinda tricky because you need to make sure they are stored on a 2 byte boundary or hack around my trick, which is a hack itself). Given: void *buffer; make: char *c_buffer=(char *)buffer; make: short *i_buffer=(short *)buffer; then: short i = i_buffer[BYTE_OFFSET / 2]; (this should be a little more endian safe) Chris
| webmaster | delorie software privacy |
| Copyright © 2019 by DJ Delorie | Updated Jul 2019 |