点分十进制表示的字符串转换为 unsigned int 整型数值

ip地址转为整数 这道题主要考量了两个知识点。 1)ip地址每个点分十进制数的值为0-255,转化为二进制就是 0000 0000 ~ 1111 1111。正好可以存储在一个八位的空间中,4个数正好是32位,和int32的长度是一样的。 2)int32的第一位为正负位,所以取值范围是-2147483648 ~ 2147483647,不满足我们的需求,所以我们需要使用uint32来进行存储。 func Ip2Num(ip string) (uint32, error) { var result uint32 var 阅读详情

/*题目4:(简答题:10.0分)
实现函数将点分十进制表示的字符串转换为 unsigned int 整型数值
unsigned int my_ResDotDec(const char *strip);
参数说明:strip 点分十进制表示的字符串;
示例: strip =“128.11.3.31” ; 返回值: 2148205343;
strip =“128.399.2.12” ; 返回值为 UINT_MAX

#include <iostream>
#include <ctype.h>
#include <limits.h>
#include <stack>

using namespace std;


//处理单个atoi
int my_atoi_single(const char p)
{
    return p - '0';
}

//atoi的子函数,将进制,字符,符号传递进来
unsigned int my_atoi_Son(const char *p,int system)
{
    stack<char> sta;
    unsigned int sum = 0;
    unsigned int tmp = 0;
    while(isdigit(*p))
    {
        sta.push(*p);
        p++;
    }
    int n = sta.size();
    for(int i = 0; i < n;++i)
    {
        tmp = my_atoi_single(sta.top());
        sta.pop();
        for(int j = 0;j < i;++j)
        {
            tmp = tmp * system;
        }
        sum += tmp;
    }
    return sum; 
}


unsigned int  my_atoi(const char *str)
{
    unsigned int integer = 0;
    int system = 10;
    const char * p = str;
    if(!isdigit(*p))
    {
        throw exception("输入的字符串,无法进行atoi!");
    }
    integer = my_atoi_Son(p,system);
    return integer;
}
 
void DDN_to_UIN_Son(char *str,char *des,int i,int n)
{
    char * p = des;
    char * q = str;
    p = p + (i * 8) + 8 - n;
    while(n--)
    {
        *p++ = *q++;
    }
}

//二进制字符串转成无符号整型
unsigned int  BINChar_to_UIN(const char *buffers)
{
    stack<char> sta;
    unsigned int sum = 0;
    unsigned int tmp = 0;
    const char * p = buffers;
    int i ,j;
    for(i = 0;i < 32;++i)
    {
        sta.push(*p);
        ++p;
    }
    for(i = 0; i < 32;++i)
    {
        if(sta.top() == '0')
        {
            tmp = 0;
        }
        else
        {
            tmp = 1;
        }
        sta.pop();
        for(j = 0;j < i;++j)
        {
            tmp = tmp * 2;
        }
        sum += tmp;
    }
    return sum;
}

//10进制数转2进制,并保存在bool类型数组中
void DEC_to_BIN(unsigned int value, bool *buffer,int i)
{
    bool * p = buffer;
    bool itmp = 0;
    int n = 0;
    stack<bool> sta;
    while(value)
    {
        itmp = value%2;
        value = value/2;
        sta.push(itmp);
    }
    n = sta.size();
    p = p + (i+1) * 8 - n;
    while(!sta.empty())
    {
        *p = sta.top();
        sta.pop();
        ++p;
    }
}

//二进制数转成无符号整型
unsigned int  BIN_to_UIN(bool *p)
{
    stack<bool> sta;
    unsigned int sum = 0;
    unsigned int tmp = 0;
    int i ,j;
    for(i = 0;i < 32;++i)
    {
        sta.push(*p);
        ++p;
    }
    for(i = 0; i < 32;++i)
    {
        tmp = sta.top();
        sta.pop();
        for(j = 0;j < i;++j)
        {
            tmp = tmp * 2;
        }
        sum += tmp;
    }
    return sum;
}

//点分十进制转为unsigned int 整型数值记法
unsigned int  DDN_to_UIN(const char *IP_address)
{
    const char *p = IP_address;
    bool  buffers[32] = {0} ;
    char  buff[3] = {0};
    unsigned  int s = 0;
    long long tmp = 0;
    for(int i = 0;i < 4;++i)
    {
        memset(buff,'*',3);
        for(int j = 0;j < 3;++j)
        {
            buff[j] = *p;
            ++p;
            if(*p == '.' || *p == '\0')
            {
                ++p;
                break;
            }
        }
        tmp = my_atoi(buff);
        if(tmp > 255)
        {
            return UINT_MAX;
        }
        DEC_to_BIN(tmp,buffers,i);
    }
    s = BIN_to_UIN(buffers);
    return s;
}

int main()
{   
    printf("%u\n", DDN_to_UIN("128.399.2.12"));
    printf("%u\n",UINT_MAX);
}
点分十进制IP转换为长整型 点分十进制IP和长整型转换,直接把IP地址转换为整型,存数据库增加效率。 立即下载

相关推荐

linux点分十进制IP转换为long型

linux点分十进制IP转换为long型 网络字节序与主机字节序互转

Linux环境下点分十进制和整型IP间的相互转换

对于应用程序,有4个用来处理主机字节序和网络字节序之间的相互转换。网络字节序是一种大端字节序,它是TCP/IP中定义好的一种数据表示形式,与具体主机的实现形式无关。inet_aton和inet_ntoa只能转换IPv4,且inet_ntoa是非线程安全的,下面介绍的inet_pton和inet_ntop则可以同时支持IPv4和IPv6的转换,并且他们都是线程安全的。是不建议使用的,它的功能与inet_aton类似,但当转换出错时,返回一个常值INADDR_NONE(一般为32位均为1的值)。...

木牛的博客 1045

ip点分十进制和INT数值相互装换.txt

python实现ip点分十进制核INT数值相互装换,IP转数值int,int转点分十进制

点分十进制IP和长整型转换

随笔- 423  文章- 0  评论- 25  【Programming Clip】点分十进制IP和长整型转换  作者:gnuhpc  出处:http://www.cnblogs.com/gnuhpc/   1.用途 将一个整型数值和一个IP字符串相互转换。 2.描述语言 C, Java 3.原理 IP地址是一个以点作为分隔符的十进制四

lin111000713的专栏 4852

四旋翼无人机数学模型推导

本周开始进行四旋翼无人机的学习工作,首先来进行四旋翼无人机的数学模型推导工作。。 四旋翼动力学数学模型 坐标变换 介绍四旋翼数学模型之前,首先引入坐标变换的概念,定义两个坐标系惯性坐标系{E},以及机体坐标系{B},惯性坐标系就相当于在地面建立的、静止不动的坐标系,也是我们操纵无人机所在的空间,而机体坐标系是建立于四旋翼机体之上,随着四旋翼姿态变换而变化,所以建立一种地面上的惯性坐标系与四旋翼机体坐标系之间的转换关系,就有这个必要。 对于惯性坐标系{E},以及机体坐标系{B},它们之间的转换关系

BiuBiuSun的博客 1万+

国产AI芯动力:复旦微FMQL100TAI900 FPGA原型验证板全解析

本文全面解析了复旦微FMQL100TAI900 FPGA原型验证板在国产AI硬件领域的创新突破。该板卡采用全栈国产化设计,具备出色的AI推理性能、视频处理能力和接口生态,特别适合工业质检、智能交通等场景。文章详细介绍了其芯片架构、存储子系统、接口扩展及电源设计,并分享了实战开发经验,为开发者提供了一套可靠的国产计算平台解决方案。

weixin_29250573的博客 457

点分十进制字符串IP和32位int整数互转Java实现

点分十进制字符串IP和32位int整数互转Java实现 比较简单基础的题,可记录和回顾基础。 IPv4(4*8)和32位的int整数刚好可以11映射,但由于int整数是有符号的,所以不能直接通过划分为四个整数,然后乘以权值(256^(0-3)),再相加来实现互转,该过程会出现int整数溢出。如果是IPv4转换为long型倒不用考虑这个问题。 这里直接通过简单的位运算来实现,首先再mark下java...

hqw11的博客 1195

实战:如何通过修改VTS和HTS调整GC4653 sensor帧率(附完整计算步骤)

本文以GC4653图像传感器为例,详细解析了通过修改VTS和HTS寄存器来精确调整输出帧率的完整流程。文章深入剖析了帧率计算公式FPS = PCLK / (VTS × HTS)的核心原理,并提供了从获取寄存器参数、计算目标VTS值到系统验证的实战步骤,帮助工程师掌握独立优化Sensor性能、提升低照度画质的关键技能。

gin88的博客 338

将点分割的ip地址转化为int

简介: ip地址实际上是一个32位的二进制数,不过为了表示方便,我们通常以每八位的十进制,中间用点隔开,便于记忆。 例如10.10.1.1 →00001010,000010101,00000001,00000001 要想把点分制的ip地址转化为十进制,首先要了解一下2进制和十进制的相互转化。 二进制转十进制: 从低位开始,连续(当前位)*(2n)相加,n从0累加。 例如100...

aaoh17568的博客 281

保姆级教程:用Python仿真OFDM系统(附抗多径干扰优化方案)

本文提供了一份详细的Python仿真OFDM通信系统教程。通过NumPy和Matplotlib,从二进制比特流开始,逐步构建完整的OFDM系统模型,涵盖IFFT、循环前缀等核心概念。重点探讨了如何对抗多径干扰,并提供了优化方案,通过误码率曲线直观对比性能,适合通信工程学习和物理层开发实践。

weixin_29230649的博客 232

MIL-STD-1553B协议解析与工程实践指南

MIL-STD-1553B作为军用航空电子系统的核心通信协议,采用命令/响应式串行总线架构,通过双冗余设计实现高可靠性数据传输。该协议定义了三类终端设备(总线控制器、远程终端、总线监视器)和六种标准消息格式,典型应用包括飞行控制系统、导航设备等关键航电组件的实时数据交互。深入解析模式代码机制和状态字位域定义,其中传输向量字(10000)和同步命令(00001)等关键指令在分布式系统时间对齐、故障诊断等场景发挥重要作用。工程实践中需特别注意78Ω终端阻抗匹配、4-12μs响应时间窗口等硬性指标,结合变压器耦合

weixin_33431149的博客 435

将点分十进制转换为ip地址表示

问题描述: 实现函数将点分十进制表示的字符串转换为 unsigned int 整型数值 unsigned int my_ResDotDec(const char *strip); 参数说明:strip 点分十进制表示的字符串; 示例: strip =“128.11.3.31” ; 返回值: 2148205343; 分析: 灵活运用联合体的特点,ip地址为unsigned int类型,点分十进制的字符相当于4个用’.'分开的unsigned char类型,所以我们可以设计一个联合体IPNode来保存stri

qq_44777506的博客 1971

第一次面试经历:集创北方数字IC前端面试(崩)总结

时间:2020年8月11日上午10点 公司:集创北方,做LED、LCD、OLED、AMOLED等显示器芯片的公司,应该主要是做显示驱动、图像处理、电源管理等这一块。 岗位:数字IC前端设计 城市:北京 形式:线上面试。感觉我俩是两个社畜,他说摄像头开不开都可以,我说那语音OK吗他说OK,于是直接语音问答。 项目经历:基于FPGA的车牌识别 & 先导存储器集成工艺开发(课题组) & 基于FPGA的贪吃蛇小游戏 反正是凉凉的,这时候准备还不足,前面都在复习项目没怎么刷过题。 过程如下: 自我介绍

coin的博客 6680

将ip地址转换为点分十进制表示

题目描述: 实现函数将 unsigned int 整型数值转为点分十进制记法表示: 点分十进制(Dotted Decimal Notation)全称为点分(点式)十进制表示法, 是IPv4的IP地址标识方法。 IPv4中用四个字节表示一个IP地址,每个字节按照十进制表示为0~255。 点分十进制就是用4个从0~255的数字,来表示一个IP地址。 char * my_DotDec(unsigned int ip,char *buffer); 参数说明: value:欲转换的数数值。 buffer:目标字符串的

qq_44777506的博客 8221

信号与电源完整性5:轨道塌陷噪声/电源轨道噪声分析及降低解决方案

经过上一节关于串扰的分析,我们已经清楚,噪声问题不仅仅来源于信号网络;电源和地网络所产生的噪声,被反馈到其所在的元器件和信号网络时,其破坏力也是巨大的;本节所讨论的轨道塌陷噪声就是一个典型的实例。在经过电源的地网络的电流发生改变时,在电源和地之间的阻抗上将产生一个压降;由于该压降的产生,用电元件的电压将直接被拉低,甚至可能对电路产生功能性的错误。接下来硬小二将详细的分析电源轨道噪声和降低其的解决方法。...

fydar的博客 2242

YOLO11改进 - 卷积Conv | StripBlockStripBlock大条带卷积块,通过顺序条带卷积捕获方向性长程依赖,强化高长宽比目标特征提取 | AAAI 2026

本文介绍了面向高纵横比目标检测的条带卷积模块——StripBlock,适用于遥感、船只、车道等细长结构目标的特征增强。该方法先通过 `5×5` 深度卷积提取局部空间信息,再利用 `1×19` 与 `19×1` 的正交长条卷积分别建模横向和纵向长程依赖,最后通过 `1×1` 卷积生成空间注意力权重,并以逐元素门控方式重标定输入特征。我们将 StripBlock 成功集成进 YOLO11,在检测头的多尺度特征层中引入条带式空间建模能力,从而增强模型对细长目标和复杂遥感场景的定位与识别效果。

魔改工程师的博客 234

无符号整型转点分十进制

/*题目3:(简答题:10.0分) 实现函数将 unsigned int 整型数值转为点分十进制记法表示: 点分十进制(Dotted Decimal Notation)全称为点分(点式)十进制表示法, 是IPv4的IP地址标识方法。 IPv4中用四个字节表示一个IP地址,每个字节按照十进制表示为0~255。 点分十进制就是用4个从0~255的数字,来表示一个IP地址。 char * my_DotDec(unsigned int ip,char *buffer); 参数说明: value:欲转换的数数值。 b

wind_waves的博客 1809

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

C语言解析ip地址的字符串转换为整型例程

#include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> long ivp4ToInt(char *str){ int i,slen = 0; int numTemp = 0; int dotNum = 0; ...

u010068160的博客 2204

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

IP地址点分十进制打印

IPV4:ip地址由32个bit位构成(32个二进制位) IPV6:ip地址由128个二进制位构成

qq_48083892的博客 734

Boost - C++的转化数字IP到字符串IP

* INET_ATON(expr) 给出一个作为字符串的网络地址的"点地址"(如127.0.0.1)表示,返回一个代表该地址数值的整数。地址可以是4或8比特地址。 mysql> SELECT INET_ATON('209.207.224.40'); -> 3520061480 产生的数字总是按照网络字节顺序。如上面的例子,数字按照 209×2563 +...

beattwo的专栏 649

struct in_addr 结构体

struct in_addr 结构体: structin_addr{ in_addr_ts_addr; }; 表示一个32位的IPv4地址。 in_addr_t一般为32位的unsigned int,其字节顺序为网络字节序,即该无符号数采用大端字节序。其中每8位表示一个IP地址中的一个数值。 打印的时候可以调用inet_ntoa()函数将其转换为char*类型。 ...

weixin_30787531的博客 498

IP处理函数inet_aton()和inet_ntoa()

MYSql的IP对int的转换函数 select inet_aton(ip) from table_name; 网络地址: 192.168.33.123 每一个值最大不会越过255,也就是十六进制的FF,两个Byte刚好表示的最大值是255, 这样子,就可以用一个32位的整形来保存这个地址 192 168 33 123 1100 0000 1010 100...

编程资料大全 439

Linux 网络编程(网络字节序、地址转换)

字节序 字节序是指多字节数据的存储顺序,在设计计算机系统的时候,有两种处理内存中数据的方法:大端格式、小端格式。 小端格式(Little-Endian):将低位字节数据存储在低地址。 大端格式(Big-Endian):将高位字节数据存储在低地址。 举个简单的例子,对于整形 0x12345678,它在大端格式和小端格式的系统中,分别如下图所示的方式存放: 下面例子为确定主机的字节序: #i...

小麦大大博客 1126

C语言从入门到进阶(个人笔记细节版)鲍松山老师课程

《C语言入门基础笔记》摘要 本文是C语言基础入门教程,包含以下核心内容: 开发环境:推荐VS2026/Dev-C++/CodeBlocks编译器 基础语法:首个C程序结构、数据类型(整型/浮点型)及存储大小 输入输出:printf/scanf函数详解,格式化输出技巧 进制转换:二进制/八进制/十进制/十六进制互转方法 变量常量:定义、命名规则、作用域及const与#define区别 实用技巧:VS编译器问题解决方案、格式化输出控制、浮点精度处理 配套练习:包含日期反向输出、进制转换等实践题目 笔记采用渐进式

一起学习编程知识 583

【Linux】三十二.《Linux 网络编程:UDP Socket 编程深度梳理:IP 端口、网络字节序、socket API,手写多线程聊天室巩固网络模型》

sockaddr_in结构体。

2501_93351213的博客 805
上一篇: 无符号整型转点分十进制
下一篇: 与这个美丽的世界说再见的atoi——使用字符串来判断是否溢出
恩嗯
博客等级 码龄8年 47粉丝 112原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值