C字符串到字节或二进制(8位)

时间:2015-11-26 14:08:16

标签: c string binary byte mplab

我在C中寻找一种简单的方法将字符串转换为字节或二进制(8位)。我总是会收到0到25​​5之间的字符串,例如:

  • 如果我收到" 0",我想将其转换为00000000
  • 如果我收到" 255",我想将其转换为11111111
  • 如果我收到" 128",我想将其转换为10000000

这对我有用,因为我在C中为PIC16F1705实现代码,根据我通过EUSART模块接收的值,我会将此值放入PWM模块以控制直流电机的功率。我使用MPLAB IDE和XC8编译器,以便能够使用C而不是汇编。

1 个答案:

答案 0 :(得分:3)

您可以使用atoi,例如

#include <stdlib.h>

const char *s = "192";
uint8_t val = atoi(s);  // val = 192 = 11000000

<小时/> 如果你想避免引入库代码,你可以随时为这个特定的用例推出自己的atoi自定义版本,例如:

uint8_t atoi_u8(const char *p)
{
    uint8_t v = 0;
    while (*p)
    {
        v = v * 10 + *p - '0';
        p++;
    }
    return v;
}