首页 > 其他分享 >前缀长度转成子网掩码

前缀长度转成子网掩码

时间:2023-06-29 09:02:53浏览次数:45  
标签:include 前缀 int mask num ff ipv6 长度 子网掩码

原文地址:https://www.cnblogs.com/liqinglucky/p/ipv6_mask.html

将前缀长度转成子网掩码

#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <string.h>
#include <stdlib.h>

int mask_fun(int mask_num)
{
        int i,j, a, b;
        unsigned char ipv6[16] = {0};
        unsigned char ipv6_b[16] = {0};
        unsigned char tmp_str[128] = {0};

        a = mask_num / 8;
        b = mask_num % 8;

        for(i = 0; i < a; i++) {
                ipv6[i] = 0xff;
        }
        for (j = 0; j < b; j++) {
                ipv6[i] |= 0x80 >> j;
        }

        for (i = 0; i < 16; i++){
                printf("ipv6[%d]:%x \n",15-i, ipv6[15-i]);
        }
        printf("\n===========================\n");
        inet_ntop(AF_INET6,ipv6, tmp_str, sizeof(tmp_str));
        printf("\nsubnet mask : %s \n", tmp_str);


        return 1;

}


int main(int argc, char * argv[])
{
        int mask_num;

        if(argc != 2) {
                printf("%s <mask_bit_num>\n", argv[0]);
                return -1;
        }

        mask_num = atoi(argv[1]);

        mask_fun( mask_num);
        return 1;
}

运行结果

$ ./mask 80
ipv6[15]:0 
ipv6[14]:0 
ipv6[13]:0 
ipv6[12]:0 
ipv6[11]:0 
ipv6[10]:0 
ipv6[9]:ff 
ipv6[8]:ff 
ipv6[7]:ff 
ipv6[6]:ff 
ipv6[5]:ff 
ipv6[4]:ff 
ipv6[3]:ff 
ipv6[2]:ff 
ipv6[1]:ff 
ipv6[0]:ff 

===========================

subnet mask : ffff:ffff:ffff:ffff:ffff:: 

  

标签:include,前缀,int,mask,num,ff,ipv6,长度,子网掩码
From: https://www.cnblogs.com/liqinglucky/p/ipv6_mask.html

相关文章

  • CF1843E 二分+前缀和
    题意:给定一个长度为n且均为0的数组,q次单点修改(从0改为1),以及m个基于该数组的区间。规定好区间为:区间内1的个数严格大于0的个数。上述m个区间若存在一个好区间则为合法,问按顺序进行q次单点修改过程中最早出现合法的单次修改编号,若无则输出-1。马后炮思考:对于m个区间,其实际关系......
  • leetcode-前缀和数组&差分数组
    前缀和数组:前缀和技巧适用于快速、频繁地计算一个索引区间内的元素之和。(仅仅适用于原数组不变的情况,如果原数组经常修改,则需要考虑差分数组。)模版如下:classPrefixSum{//前缀和数组privateint[]preSum;/*输入一个数组,构造前缀和*/publicPrefixSu......
  • Go常见错误集锦之混淆slice中的长度(length)和容量(capacity)
    原文文章:https://zhuanlan.zhihu.com/p/413972333 在Go语言中,slice的底层实现是数组,也就是说,切片的数据实际上是被存储在数组中的。如果后端的数组空间已经满了或是空数组,则slice结构体负责处理数组容量的扩容或缩容逻辑。此外,slice的结构体中共拥有三个字段:一个指针,指向后......
  • IP地址、子网掩码和地址分类
    http://blog.csdn.net/bluishglc/article/details/47909593?utm_source=tuicool&utm_medium=referral 实际工作中用到网络知识的机会并不多,虽然以前学习过,但是许久不用自然也就生疏了。最近拿到几台云上的虚拟机,需要为它们建立一个VPC(虚拟私有云,就是一个虚拟的局域网),得益于......
  • 计算机网络知识——IP地址和子网掩码
    一、IP地址                IP地址由网络号和主机号组成。每台连在Internet网上的主机有唯一的IP地址。IP地址采用二进制形式,通常以"点分十进制表示法"表示(8个比特为一段,用十进制整数)。IP地址分为A、B、C、D、E五类,下图所示:(本文介绍的都是版本4......
  • 【计算机网络】IP地址和子网掩码的关系
     目录一、IP地址(1)IP地址分类(2)IP地址构成二、子网掩码三、广播地址四、子网容量相关(1)子网数(2)最大主机数(2)可用主机数总结一、IP地址了解IP地址扮演的角色有助于明白IP地址的含义乃至IP地址和子网掩码的关系IP(InternetProtocol—网际互连协议),是TCP/IP体系中的网络层......
  • 2023-06-24:给你一根长度为 n 的绳子, 请把绳子剪成整数长度的 m 段, m、n都是整数,n > 1并
    2023-06-24:给你一根长度为n的绳子,请把绳子剪成整数长度的m段,m、n都是整数,n>1并且m>1,每段绳子的长度记为k[0],k[1]...k[m-1]。请问k[0]k[1]...*k[m-1]可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。答案需......
  • 2023-06-24:给你一根长度为 n 的绳子, 请把绳子剪成整数长度的 m 段, m、n都是整数,n > 1并
    2023-06-24:给你一根长度为n的绳子,请把绳子剪成整数长度的m段,m、n都是整数,n>1并且m>1,每段绳子的长度记为k[0],k[1]...k[m-1]。请问k[0]k[1]...*k[m-1]可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。......
  • linux 中shell脚本实现统计每一个read的长度
     001、[root@PC1test02]#lstest.fastq[root@PC1test02]#cattest.fastq##测试fastq数据@SRR8442980.988/2AAGG+:[email protected]/2AAGGTC+:FFF:,@SRR8442980.1134/1AAAAAAAATATAATTCCA+FFFFFFFFFFFFFFFFFF[root@PC1test02]#awk'{if((NR%......
  • Python字符串前缀u、r、b、f含义
    Python字符串前缀u、r、b、f含义1、字符串前加u例子:u"字符串中有中文"含义:前缀u表示该字符串是unicode编码,Python2中用,用在含有中文字符的字符串前,防止因为编码问题,导致中文出现乱码。另外一般要在文件开关标明编码方式采用utf8。Python3中,所有字符串默认都是unicode字符串......