HJ33 整数与IP地址间的转换

news/2024/11/7 5:38:51/

题目:

HJ33 整数与IP地址间的转换

题解一:

ip转数字:

  1. ip按'.'分隔
  2. 分隔后逐位转换为二进制,不足8位首位补0
  3. 将2进制串再转换为十进制

数字转ip:

  1. 将数字转成二进制,不足32位首位补0
  2. 对32位二进制每8位截取,并转成十进制
  3. 用 '.' 连接十进制数字串

public String convertIpFromNumber(long number) {StringBuilder binary = new StringBuilder(toBinary(String.valueOf(number)));while (binary.length() < 32) {binary.insert(0, "0");}int step = 8;int left = 0;int right = 0;String binaryString = binary.toString();List<String> resultList = new ArrayList<>();while (right <= binaryString.length() - 1) {left = right;right += step;String substring = binaryString.substring(left, right);resultList.add(String.valueOf(toNumberByBinary(substring)));}return String.join(".", resultList);}public long convertNumberFromIp(String s) {StringBuilder stringBuilder = new StringBuilder();String[] split = s.split("\\.");for (String s1 : split) {stringBuilder.append(toBinary(s1));}return toNumberByBinary(stringBuilder.toString());}public long toNumberByBinary(String string) {long result = 0;int index = 0;char[] chars = string.toCharArray();for (int i = chars.length - 1; i >=0; i--) {int n = chars[i] - '0';result += n * Math.pow(2, index++);}return result;}public String toBinary(String number) {StringBuilder stringBuilder = new StringBuilder();long n = Long.parseLong(number);while (n != 0) {stringBuilder.append(n%2);n /= 2;}if (stringBuilder.length() < 8) {while (stringBuilder.length() != 8) {stringBuilder.append("0");}}return stringBuilder.reverse().toString();}

题解二:

IP中一个数字二进制占8位,4个数字占32位,2^32 = 256,所以IP可以当做256进制运算。

    public String numberToIp(long number) {String[] resultArr = new String[4];for (int i = 3; i >= 0; i--) {resultArr[i] = String.valueOf(number%256);number /= 256;}return String.join(".", resultArr);}public long ipToNumber(String ip) {long result = 0;String[] split = ip.split("\\.");for (String s : split) {result = result*256 + Integer.parseInt(s);}return result;}


http://www.ppmy.cn/news/432403.html

相关文章

CAD绘图教程之CAD中怎么进行消防计算?

消防设计是建筑CAD图纸设计中的重要内容之一。在进行消防设计的过程中必然需要进行消防计算&#xff0c;那么浩辰CAD给排水软件中如何进行消防计算呢&#xff1f;接下来的CAD绘图教程就让小编来给大家介绍一下国产CAD制图软件——浩辰CAD给排水软件中进行消防计算的相关操作技巧…

无锡设计——CAD设计和绘图的优点

1.设计工作的高效和设计结果的再利用 CAD为其最大功能之一的“COPY”而特别高效。在一些类似和相似的工程设计中&#xff0c;可以简单地修改设计图&#xff0c;或者直接应用&#xff0c;只需按几次键盘和鼠标即可。由于CAD软件可以将建筑施工图直接转换成设备的基本图纸&#…

触摸屏-人机界面页面切换应用教程

简介 画面切换:在一个hmi的程序中会出现很多不同的监控画面。这些之间需要通过画面切换的方式来实现 实现方式 一,功能键 二&#xff0c;直接窗口 三&#xff0c;简介窗口 四&#xff0c;plc控制 选择 元件 里面的功能键 第一种方法&#xff1a; 打开软件-新建两个…

cad化工设备绘图_化工设备CAD绘图技巧

化工设备设计1男7年第34卷利用化工设备以D软件包设计一般典型的化工设备时,根据设备类型,按表依次输人所需数据,得到的图形往往满足不了要求,这就需要利用一些AUTOCAD绘图技巧,进行必要的修改工作,最后得到较为理想的设计成品。改动最大之处要算是尺寸标注了,所以最好将常用的变…

【其他】详细设计说明书示例【机房收费系统】

详细设计说明书 1引言 1.1编写目的 说明编写这份详细设计说明书的目的&#xff0c;指出预期的读者。 该文档是在概要设计的基础上&#xff0c;进一步的细化系统结构&#xff0c;展示了软件结构的图表&#xff0c;物理设计&#xff0c;数据结构设计&#xff0c;以及算法设计…

计算机编程画图步骤,计算机CAD绘图基础教程

回答&#xff1a;3DMAX基础入门详细教程~~~ 2&#xff1a;将鼠标置于菜单栏上的软件菜单命令名称上并单击&#xff0c;即可弹出该命令的菜单。 3&#xff1a;打开这个软件某一个菜单后&#xff0c;只需在菜单栏上的各个菜单名称之间来回移动即可切换动其它菜单。 4&#xff1a;…

cad 怎么取消绘图界限?cad怎么调整图形界限

1、在CAD中&#xff0c;如何设置图形界限&#xff1f; 1、电脑打开CAD&#xff0c;输入limits命令&#xff0c;空格键确定。 2、确定命令后&#xff0c;选择格式中的图形界限。 3、点击图形界限后&#xff0c;会出现重新设置模型空间界限&#xff0c;接着再点击键盘上的回车键…

机房收费系统——UML图

机房收费系统个人版需要用vb.net结合三层&设计模式&#xff0c;刚开始还想着边画图边写代码&#xff0c;画好一个窗体的图再写一个窗体的代码&#xff0c;师傅看了我的周报后&#xff0c;明确告诉我先画图写文档再写代码。这几天&#xff0c;一直忙着画图&#xff0c;画好之…