/*IPAddress.cpp - Base class that provides IPAddressCopyright (c) 2011 Adrian McEwen. All right reserved.This library is free software; you can redistribute it and/ormodify it under the terms of the GNU Lesser General PublicLicense as published by the Free Software Foundation; eitherversion 2.1 of the License, or (at your option) any later version.This library is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNULesser General Public License for more details.You should have received a copy of the GNU Lesser General PublicLicense along with this library; if not, write to the Free SoftwareFoundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA*/#include <Arduino.h>#include <IPAddress.h>IPAddress::IPAddress(){_address.dword = 0;}IPAddress::IPAddress(uint8_t first_octet, uint8_t second_octet, uint8_t third_octet, uint8_t fourth_octet){_address.bytes[0] = first_octet;_address.bytes[1] = second_octet;_address.bytes[2] = third_octet;_address.bytes[3] = fourth_octet;}IPAddress::IPAddress(uint32_t address){_address.dword = address;}IPAddress::IPAddress(const uint8_t *address){memcpy(_address.bytes, address, sizeof(_address.bytes));}bool IPAddress::fromString(const char *address){uint16_t acc = 0; // Accumulatoruint8_t dots = 0;while (*address){char c = *address++;if (c >= '0' && c <= '9'){acc = acc * 10 + (c - '0');if (acc > 255) {// Value out of [0..255] rangereturn false;}}else if (c == '.'){if (dots == 3) {// Too much dots (there must be 3 dots)return false;}_address.bytes[dots++] = acc;acc = 0;}else{// Invalid charreturn false;}}if (dots != 3) {// Too few dots (there must be 3 dots)return false;}_address.bytes[3] = acc;return true;}IPAddress& IPAddress::operator=(const uint8_t *address){memcpy(_address.bytes, address, sizeof(_address.bytes));return *this;}IPAddress& IPAddress::operator=(uint32_t address){_address.dword = address;return *this;}bool IPAddress::operator==(const uint8_t* addr) const{return memcmp(addr, _address.bytes, sizeof(_address.bytes)) == 0;}size_t IPAddress::printTo(Print& p) const{size_t n = 0;for (int i =0; i < 3; i++){n += p.print(_address.bytes[i], DEC);n += p.print('.');}n += p.print(_address.bytes[3], DEC);return n;}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
1. 开源生态
2. 协作、人、软件
3. 评估模型