一日一技:负长整数如何转换为IPv4地址?

简介: 一日一技:负长整数如何转换为IPv4地址?

今天来说说,如何把负的长整数转换为IP地址,例如: -986913820转换为IP地址,为: 197.44.227.228

要把负长整数转换为IP,需要首先知道一个概念: 补码

所谓补码,就是二进制数逐位取反,再+1。什么叫做逐位取反呢?就是0变成1,1变成0.

那么,把负的长整数转换为二进制,过程如下:

  1. -986913820的负号去掉,然后转换为二进制数: 111010110100110001110000011100,这个二进制数只有30位,而IP对应的长整数是32位,所以左边补两个0,变成: 00111010110100110001110000011100
  2. 逐位取反,得到: 11000101001011001110001111100011
  3. 对这个二进制数+1,得到: 11000101001011001110001111100100
  4. 把这个32位的二进制数,8位一组分开,获得: 11000101, 00101100, 11100011, 11100100
  5. 把这4组二进制数转换为十进制: 197, 44, 227, 228
  6. 把4个数按顺序拼接为IP地址格式: 197.44.227.228

在计算机中,负数都是使用补码的形式来表示的,所以对于两个二进制数相减,在计算机中实际上是做得被减数加上减数的补码。如果大家对此有兴趣,请在评论留言,我们明天细讲。

目录
相关文章
|
存储 弹性计算 Kubernetes
自建K8S通过PVC配置NAS动态磁盘要点回顾
在K8S上如何配置永久性PVC是大家在生产环境中比较关心的话题,那么如果通过阿里云的NAS来结合进行永久性磁盘的配置呢?本文通过其详细步骤和要点把成功配置的方法给大家做一个分享。本文不做理论性阐述,纯实战,有不严谨之处还望评论指正。
1657 0
自建K8S通过PVC配置NAS动态磁盘要点回顾
|
5月前
|
前端开发 Java API
Spring MVC 数据绑定机制详解:@ModelAttribute vs. @RequestParam 和 @PathVariable
本文深入解析了Spring MVC的数据绑定机制,重点对比了`@RequestParam`、`@PathVariable`和`@ModelAttribute`三种注解的使用场景与功能。`@RequestParam`适用于从查询参数或表单数据中提取简单值;`@PathVariable`用于从URL路径中获取资源标识符;而`@ModelAttribute`则能将多个请求参数自动绑定到Java对象,支持复杂数据结构的处理。通过实际案例分析,帮助开发者根据需求选择合适的注解,提升API设计与表单处理效率。
348 9
|
10月前
|
运维 监控 应用服务中间件
自动化运维:如何利用Python脚本提升工作效率
【10月更文挑战第30天】在快节奏的IT行业中,自动化运维已成为提升工作效率和减少人为错误的关键技术。本文将介绍如何使用Python编写简单的自动化脚本,以实现日常运维任务的自动化。通过实际案例,我们将展示如何用Python脚本简化服务器管理、批量配置更新以及监控系统性能等任务。文章不仅提供代码示例,还将深入探讨自动化运维背后的理念,帮助读者理解并应用这一技术来优化他们的工作流程。
|
编解码 资源调度
功率谱密度(PSD)及其在无线通信中的应用
功率谱密度(PSD)及其在无线通信中的应用
1516 4
|
11月前
|
存储 安全 物联网
|
JavaScript 应用服务中间件 API
Node.js搭建REST API实战:从基础到部署
【7月更文挑战第18天】通过以上步骤,你可以将你的Node.js REST API从开发环境顺利迁移到生产环境,并利用各种工具和技术来确保应用的稳定性、安全性和可扩展性。
|
自然语言处理 Java Apache
Java中的自然语言处理应用
Java中的自然语言处理应用
|
存储 关系型数据库 MySQL
深入研究MySQL意向锁
MySQL意向锁是一种特殊的表级锁,由InnoDB存储引擎在操作数据之前自动添加,无需用户干预。它分为意向共享锁(IS)和意向排他锁(IX)两种。意向锁的主要作用是协调行锁和表锁的关系,优化加锁策略,避免全表扫描判断是否存在行锁。意向锁之间不会冲突,但会与表级别的排他锁冲突,从而确保数据库并发访问的一致性和完整性。简而言之,意向锁提高了数据库并发操作的性能和效率。
23021 5
|
消息中间件 关系型数据库 MySQL
MySQL 到 Kafka 实时数据同步实操分享(1),字节面试官职级
MySQL 到 Kafka 实时数据同步实操分享(1),字节面试官职级