首页 > 其他分享 >HJ33 整数与IP地址间的转换

HJ33 整数与IP地址间的转换

时间:2023-07-19 20:11:06浏览次数:45  
标签:String int StringBuffer 整数 ip2 Long IP地址 HJ33 sb

1. 题目

读题

HJ33 整数与IP地址间的转换 

 

考查点

 

2. 解法

思路

 二进制与十进制的互转

可参照   Java中十进制二进制相互转换的方法

代码逻辑

 

具体实现

 

public class IP2Num {

public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
System.out.println(convertIp10(sc.nextLine()));
System.out.println(convertIp(sc.nextLine()));
}
}


public static long convertIp10(String ip) {
String[] ips = ip.split("\\.");
StringBuffer sb = new StringBuffer();
for (String cur : ips) {
sb.append(binStr(cur));
}
return Long.parseLong(sb.toString(), 2);

}

private static String binStr(String s) {
StringBuffer sb = new StringBuffer();
int num = Integer.parseInt(s);
int k = 1 << 7;
for (int i = 0; i < 8; i++) {
int flag = (num & k) == 0 ? 0 : 1;
sb.append(flag);
num = num << 1;
}

return sb.toString();
}

public static String convertIp(String ip10) {
StringBuffer sb = new StringBuffer();
String ip2 = Long.toBinaryString(Long.parseLong(ip10));
String as = "";
for (int i = 0; i < 32 - ip2.length(); i++) {
as = as + "0";
}
ip2 = as + ip2;

for (int i = 0; i < ip2.length(); i = i + 8) {
sb.append(Long.parseLong(ip2.substring(i, i + 8), 2)).append(".");
}
return sb.deleteCharAt(sb.length() - 1).toString();
}

}

3. 总结

标签:String,int,StringBuffer,整数,ip2,Long,IP地址,HJ33,sb
From: https://www.cnblogs.com/shoshana-kong/p/17548657.html

相关文章

  • 第5章 IP地址管理和DHCP故障转移
    第5章IP地址管理和DHCP故障转移5.1IPAMIP地址管理(IPAddressManagement,IPAM)并不仅仅是一个规定如何管理IP地址的新的时髦词汇;它实际上是Windows2012R2的一个非常酷的新功能,该功能与已有的企业DNS和DHCP部署集成之后,将简化网络的复杂度。5.1.2IPAM的组件IPAM由三......
  • Linux配置IP地址
    目录修改配置文件重启网络服务相关命令查看路由状态route-n查看IP地址ipa查看网卡参数ethtoolens33查看DNS解析nslookup修改配置文件vi/etc/sysconfig/network-scripts/ifcfg-ens33配置解释TYPE=Ethernet#网卡类型是以太网PROXY_METHOD=noneBROWSER_ONLY=noBOO......
  • 2023-07-18:给你一个正整数数组 nums,请你移除 最短 子数组(可以为 空), 使得剩余元素的 和
    2023-07-18:给你一个正整数数组nums,请你移除最短子数组(可以为空),使得剩余元素的和能被p整除。不允许将整个数组都移除。请你返回你需要移除的最短子数组的长度,如果无法满足题目要求,返回-1。子数组定义为原数组中连续的一组元素。输入:nums=[3,1,4,2],p=6。输出:1。答......
  • 2023-07-18:给你一个正整数数组 nums,请你移除 最短 子数组(可以为 空), 使得剩余元素的 和
    2023-07-18:给你一个正整数数组nums,请你移除最短子数组(可以为空),使得剩余元素的和能被p整除。不允许将整个数组都移除。请你返回你需要移除的最短子数组的长度,如果无法满足题目要求,返回-1。子数组定义为原数组中连续的一组元素。输入:nums=[3,1,4,2],p=6。输......
  • 夜神模拟器设置内网ip地址,利用adb命令查看ip和MAC地址
    1、打开设置-》手机与网络界面2、第一次需要安装桥接驱动,点击安装生重启后进行下图的设置3、开启桥接模式,选择DHCP并保存设置 4、利用adb查看ip和内网地址1)进行夜神模拟器的安装目录\bin,我的在D:\ProgramFiles\Nox\bin输入CMD  2)查看ip和Mac ......
  • 分治法处理大整数相乘问题
    分治法解决大整数相乘问题1.题目描述大数乘法法运算跟一般的减法运算是不同的,在面对基本数据类型容量有限而导致无法存储特大数字的情况下,本文采用分治策略的方法来解决大数减运算问题。输入:两个代表整数的字符串a和b,规定a>=b,a,b>0。输出:返回表示结果整数的字符串。2.解决......
  • linuxIP地址和主机名,再虚拟机中配置linux固定IP
    1.IP地址IPV4版本地址格式:a.b.c.d,其中abcd是0-255的数字可以通过ifconfig查看本机的IP地址2.特殊IP地址127.0.0.1,表示本机0.0.0.0,可以指代本机,也可以在端口绑定中用来确定绑定关系,还可以在IP地址限制中表示所有的IP允许所有IP访问3.主机名每一台电脑除......
  • P8708 [蓝桥杯 2020 省 A1] 整数小拼接 题解
    前言传送门blog思路这种选出两个数拼接在一起的题,一看就可以使用two-point,我们使用$l$和$r$分别从最大的和最小的开始搜索,进行两次。以$l$为头,$r$为尾。以$r$为头,$l$为尾。如何比较大小呢?我们可以先去做宇宙总统这道题。首先排序的$cmp$:boolcmp(strin......
  • java验证小数整数位和小数位的正则
    Java验证小数整数位和小数位的正则正则表达式是一种强大的工具,用于匹配和操作字符串。在Java中,我们可以使用正则表达式来验证小数的整数位和小数位。验证小数整数位和小数位的规则在验证小数的整数位和小数位之前,我们需要了解一下这两个部分的规则。整数位:小数点之前的数字部......
  • 代码随想录算法训练营第三十二天| 343. 整数拆分 96.不同的二叉搜索树
     343.整数拆分要求:将一个正数拆分成N个正整数,使得这N个正整数的乘机是最大的思路:DP数组:dp[n]N的时候,它的乘机最大值注意:不是i*dp[n-i]就是最大值,因为如果用dp就证明要开始拆分了,如果我不拆分,就是用的这两个数的话,那么就是单纯的i*(n-i)代码:1//要求:将N拆分成K......