首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >对于16位数据,我应该使用什么来代替putchar()?

对于16位数据,我应该使用什么来代替putchar()?
EN

Stack Overflow用户
提问于 2018-06-06 06:42:34
回答 1查看 316关注 0票数 3

我是C语言的新手,我写了一个简单的程序,它生成一个具有指定频率和采样率的正弦波,并将其作为一个无符号的8位字节发送到stdout。

代码语言:javascript
运行
复制
#include <stdio.h>
#include <math.h>
#include <stdint.h>

uint8_t sinco(int iCarrier, int iSampleRate, unsigned long ulIndex){return (sin(iCarrier * (2 * M_PI) * ulIndex / iSampleRate) * 127) + 128;}

void main(){    
    unsigned long t;
    const int iCarrier = 500;
    const int iSampleRate = 8000;

    for(t=0;;t++){
        putchar(sinco(iCarrier, iSampleRate, t));
    }
}

我意识到putchar()不是最合适的函数,但它可以满足我当时的需要。现在,我正在尝试修改程序以输出一个无符号的16位数字,但是我不确定用什么替换putchar()。

这就是我到目前为止所知道的:

代码语言:javascript
运行
复制
#include <stdio.h>
#include <math.h>
#include <stdint.h>

uint16_t sinco(int iCarrier, int iSampleRate, unsigned long ulIndex){return (sin(iCarrier * (2 * M_PI) * ulIndex / iSampleRate) * 65535) + 65536;}

void main(){    
    unsigned long t;
    const int iCarrier = 500;
    const int iSampleRate = 8000;

    for(t=0;;t++){
        printf(%hu, sinco(iCarrier, iSampleRate, t));
    }
}

但是,一旦该值大于65,536,程序就开始向标准输出发送32位。有没有比putchar更好的替代品,我可以使用它来正确地绕回呢?

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50709925

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档