Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > C Programming > data conversion

Reply
Thread Tools

data conversion

 
 
andrewjj20
Guest
Posts: n/a
 
      11-23-2003
I have a program producing data as a double somehow I need to get red of
the decimal and convert it to a short, and then conver that to a char to
be read to /dev/dsp as 16-bit audio data.

andrewjj20

 
Reply With Quote
 
 
 
 
Jack Klein
Guest
Posts: n/a
 
      11-24-2003
On Sun, 23 Nov 2003 19:03:11 GMT, andrewjj20 <(E-Mail Removed)>
wrote in comp.lang.c:

> I have a program producing data as a double somehow I need to get red of
> the decimal and convert it to a short, and then conver that to a char to
> be read to /dev/dsp as 16-bit audio data.
>
> andrewjj20


double d;
char c;

/* do something to produce a value in d */

c = d;

Assigning a floating point value to any integer type truncates the
fractional part.

But if the whole number part of the floating point type is outside the
range of values of the integer type, the result is undefined behavior.

Assuming that plain char is signed on your system, the assignment will
do exactly what you want as long as d is greater than -128.0 and less
than +128.0. If the double value is outside the range of a char, you
need to do something about that first.

--
Jack Klein
Home: http://JK-Technology.Com
FAQs for
comp.lang.c http://www.eskimo.com/~scs/C-faq/top.html
comp.lang.c++ http://www.parashift.com/c++-faq-lite/
alt.comp.lang.learn.c-c++ ftp://snurse-l.org/pub/acllc-c++/faq
 
Reply With Quote
 
 
 
 
andrewjj20
Guest
Posts: n/a
 
      11-30-2003
Jack Klein wrote:
> On Sun, 23 Nov 2003 19:03:11 GMT, andrewjj20 <(E-Mail Removed)>
> wrote in comp.lang.c:
>
>
>>I have a program producing data as a double somehow I need to get red of
>>the decimal and convert it to a short, and then conver that to a char to
>>be read to /dev/dsp as 16-bit audio data.
>>
>>andrewjj20

>
>
> double d;
> char c;
>
> /* do something to produce a value in d */
>
> c = d;
>
> Assigning a floating point value to any integer type truncates the
> fractional part.
>
> But if the whole number part of the floating point type is outside the
> range of values of the integer type, the result is undefined behavior.
>
> Assuming that plain char is signed on your system, the assignment will
> do exactly what you want as long as d is greater than -128.0 and less
> than +128.0. If the double value is outside the range of a char, you
> need to do something about that first.
>

currently here is the code that I am using to change a short into signed
16-bit data:

short int t = data[a];
unsigned char high = t >> 8;
unsigned char low = t;
buf[2*a]=low;
buf[2*a+1]=high;

it was in a for loop and buf is an unsigned char array.

andrewjj20

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
PSD to XHTML Conversion Services and PSD to HTML CSS ConversionServices, PSD to Joomla, Drupal, Wordpress Conversion xhtml champs Python 0 06-21-2011 11:59 AM
PSD to XHTML Conversion Services and PSD to HTML CSS ConversionServices, PSD to Joomla, Drupal, Wordpress Conversion PSD to XHTML Conversion Services and PSD to HTML CSS Conversion Services, PSD to Joomla, Drupal, Wor VHDL 0 04-25-2011 06:43 AM
conversion operator and conversion ctor subramanian100in@yahoo.com, India C++ 2 09-15-2009 12:46 PM
System.Data.SqlClient.SqlException: The conversion of a char data. egsdar ASP .Net 0 12-13-2008 01:40 PM
The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value. luna ASP .Net 1 02-13-2004 01:15 PM



Advertisments