将IPv4地址转换为std :: bytesarray

问题描述

对于以下编译器警告,我感到困惑,当我尝试将ipv4地址in_addrstruct sockaddr_in转换为uint32_t到字节的std :: array时,得到了警告。 / p>

std::array<uint8_t,4> IpAddress;
struct in_addr in_addr = {};
const char* addr_str = "168.212.226.204";

if (inet_pton(AF_INET,addr_str,&in_addr))
{
    uint8_t* addr = reinterpret_cast<uint8_t*>(&(in_addr.s_addr));

    for (int i = 0; i < 4; i++)
    {
        IpAddress[i] = addr[i]; // warning: conversion to 'std::array<unsigned char,4>::size_type {aka long unsigned int}' from 'int' may change the sign of the result [-Wsign-conversion]
    }
}

如何解决此问题?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)