gpt4 book ai didi

c - 在 UDPGet 中使用整数值

转载 作者:行者123 更新时间:2023-11-30 18:01:28 24 4
gpt4 key购买 nike

我正在尝试为我的 PIC 设备进行一些通信,并且我使用 UDP。当我发送一个字符(如“R”或任何其他字符)时,我可能会向套接字发送任何内容。代码可以理解它并且一切正常,但是当我尝试发送整数时它不起作用。

static UDP_SOCKET   MySocket;
BYTE i;

这有效:

if(!UDPIsGetReady(MySocket))
return;

UDPGet(&i);
if(i == 'R') SetDCPWM1(255);

UDPGet(&i);
if(i == 'G') SetDCPWM1(155);

此代码不起作用:

UDPGet(&i);
SetDCPWM1(255-atoi(i));

它可以编译,不会崩溃,只是不起作用。问题是可以发送和接收字母(字符),但我不能对整数做同样的事情。就像我可以发送“R”并收到它,但我无法发送“1”或“20”,但我真的想发送一个从 0 到 255 的整数。

最佳答案

首先,atoi 函数需要一个字符串,而您为其提供一个字节。其次,atoi 只接受数字,如果您收到的值是非数字,那么它将返回零。

我建议你尝试这个:

UDPGet(&i);
if (isdigit(i))
SetDCPWM1(255 - (i - '0'));

i - '0' 将 ASCII 数字转换为实际值。我添加了 if 语句来确保接收到的数字确实是一个数字,否则计算会错误,甚至可能得到负数。

关于c - 在 UDPGet 中使用整数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9820940/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com