Path: csiph.com!x330-a1.tempe.blueboxinc.net!usenet.pasdenom.info!weretis.net!feeder4.news.weretis.net!news.musoftware.de!wum.musoftware.de!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail From: Ian Collins Newsgroups: comp.lang.c++ Subject: Re: Using cout to print hex values; surely you can't be serious Date: Thu, 09 Feb 2012 20:22:00 +1300 Lines: 29 Message-ID: <9phagoFom1U7@mid.individual.net> References: <08081227-b09b-454f-b23d-85ebb98207c0@n12g2000yqb.googlegroups.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Trace: individual.net WGW175qc+Ptk4LI7u+TSVQ38p+yGU2xlVeWSBZu+LMjz3/PhjX Cancel-Lock: sha1:Xk+vNBqEIsdw0p+UAHDuPpDrTSA= User-Agent: Mozilla/5.0 (X11; SunOS i86pc; rv:6.0.2) Gecko/20111003 Thunderbird/6.0.2 In-Reply-To: Xref: x330-a1.tempe.blueboxinc.net comp.lang.c++:13863 On 02/ 9/12 07:41 PM, Paavo Helde wrote: > Chris Stankevitz wrote in news:08081227-b09b- > 454f-b23d-85ebb98207c0@n12g2000yqb.googlegroups.com: > >> char c = 0xFF; >> >> Q1: How do I use cout to print the variable c so that it appears at >> stdout as "FF"? > > char buff[3]; > sprintf(buff, "%02X", c); > std::cout<< buff; > > If you are afraid that char is 32 or 64 bits on some platform and might not > fit into the buffer, you can make the buffer e.g. 17 bytes long as a > precaution. The buffer is an array of char, so it will always be big enough no matter how big a char is (in c++ terms it is always 1). > The point is that the dreaded buffer overflows associated with > sprintf() can be avoided here easily as the output size is constrained, so > there is no reason why sprintf() could not be used if it suits the task > better. Completely agree. -- Ian Collins