精华内容
下载资源
问答
  • 网络中计算机的32位IPv4地址以二进制显示,也会以点分十进制显示。而IPv6的地址是128位,是由数字和A-F组成的十六进制系统。因此,了解并且学会在其三者之间相互转换是非常重要的,让我们能够更好的了解它们。二进制...

    网络中计算机的32位IPv4地址以二进制显示,也会以点分十进制显示。而IPv6的地址是128位,是由数字和A-F组成的十六进制系统。因此,了解并且学会在其三者之间相互转换是非常重要的,让我们能够更好的了解它们。

    二进制数制系统

    IPv4地址以二进制开头,仅包含0和1。主机,服务器和网络设备均使用二进制编址,即IPv4地址。

    每个地址包含32位字符串,分为四个部分,被称为二进制八位组。e.g. 11000000.10101000.00001010.00001010

    为了方便使用,IPv4地址通常表达为点分十进制记法。

    二进制位置记法

    在进入二进制之前,我们看一下日常最熟悉的十进制的位置计数法。十进制以10为基数,即各位数的值为0-9。

    29443f3c1bf3161e1da1b95431dbd17d.png

    举个例子,1009 = 1*10³ + 0*10² + 0*10¹ + 9*10⁰

    相似地,2为基数的二进制也是如此,各位数为0-1

    b45fb013b79c51213c58baadfa3025f3.png

    举个例子,11000000 => 1*2⁷ + 1*2⁶ + 2⁵ + 2⁴ + 2³ + 2² + 2⁰ = 192

    这样就把二进制通过位置计数法计算转换成了十进制。

    从十进制到二进制

    我们已经学会了从二进制转换到十进制,现在开始学习十进制到二进制。

    (此处我们仅研究八位二进制数)

    假设当前的十进制数为n,我们开始转换。

    如果n>=128, 此时,第一位即为1并且n减去128,否则为0.

    接着,如果n>=64,第二位为1并减去64,否则为0.

    如果n>=32, 第三位为1并减去32,否则为0.

    根据位置值一直这样进行到与1比较并记录,最后得到的八位数即为n的二进制值。

    举个例子,n=192,

    bb4a02f70af49f37a665d485a1f53179.png

    经过一系列的比较且计算,我们得到192的二进制值为11000000,这与我们上面二进制转换成十进制结果一致。

    学习了二进制与十进制之间的相互转换,计算一下IPv4地址192.168.10.10的二进制值和11000000.10101000.00001010.00001010的十进制值,感受一下IPv4地址的转换,逐渐掌握这个技能,更好了解网络中的IPv4编址。

    十六进制数制系统

    我们解决了IPv4地址解读的问题,如开篇所说IPv6地址是以十六进制数组成。此外,在网络中,以太网MAC地址也是以十六进制数表示。

    十六进制以16为基数,其中添加了字母A-F。

    我们一起看一下十进制,二进制与十六进制值的表示

    50f09df8ef8c9df47706840b2dbf764a.png

    IPv6地址的长度为128位,其中每四位以一个十六进制数表示,一共32个十六进制值。值得一提得是IPv6地址对其中字母不区分大小写。

    二进制到十六进制

    怎样将八位得二进制转换成十六进制呢?

    首先,我们将二进制数分为两个四位的,然后分别计算两个四位的值,最后对照上面的表即可得出。

    举个例子,二进制数为11000101,先分为两个四位的二进制数,即1100和0101。然后将他们转换成十进制数,为12和5. 根据上表,对应得出十六进制数为C5,通常写作0xC5。

    (根据表中,我们无需转换成十进制数即可对应,但为了不记忆这个表,就先把它转化成十进制)

    十进制到十六进制?只要将十进制先转换为8位二进制即可根据上述方法计算得出。

    从十六进制到十进制

    首先,将十六进制分开并转换成两组四位二进制。然后,将它们拼接。最后,将这个二进制转化成十进制即可。

    举个例子,十六进制数为9F, 根据表中对应,我们可知,其对应1001与1111。拼接后为10011111,通过计算,可得十进制数为159。

    我们已经学会了二进制十进制与十六进制之间的相互转换,是不是非常简单!

    如果学会了,请给我点一个赞

    感谢阅读,如果有什么疑问欢迎评论,一起探讨!

    展开全文
  • 任意输入一个十进制的数字将结果输出成十六进制。 输入格式: 十进制整数 输出格式: 无前缀的16进制数 输入样例: 31 输出样例: 31D is 1FH 答案: a = input() b = str(hex(eval(a))) c = b.replace("0x", ''...

    PTA-记录与分享-进制转换

    题目

    任意输入一个十进制的数字将结果输出成十六进制。

    输入格式:

    十进制整数

    输出格式:

    无前缀的16进制数

    输入样例:

    31

    输出样例:

    31D is 1FH

    答案:

    a = input()
    b = str(hex(eval(a)))
    c = b.replace("0x", '')
    print('%sD is %sH' % (a, c.upper()))
    
    

    知识点:

    二进制bin() :

    • 描述:将其它进制的数转换为二进制的数。如八进制,十进制,十六进制等。

    • 语法:bin(number) 返回一个二进制数。
      number —— 其它进制的数

    八进制oct():

    • 描述:将其它进制的数转换为八进制的数。如二进制,十进制,十六进制等。

    • 语法:oct(number)
      number —— 其它进制的数

    十进制int():

    • 描述:将其它进制的是转换为十进制的数。如二进制,八进制,十六进制等。

    • 语法:int(x, base=10) -> integer 返回一个十进制整数。
      x —— base进制的字符串形式
      base —— 默认基数为10,有效基数为0和2~36

    十六进制hex():

    • 描述:将其它进制的数转换为十六进制的数。如二进制,八进制,十进制等。

    *语法:hex(number)
    number —— 其它进制的数

    一般有两种常用方法:

    • ① 进制间直接转换。
    • ② 以十进制为中间媒介进行转换,即先将x转换为十进制整数,再转换为想要转换的进制。

    所以

    我们只需要将输入的字符串用上面的函数转换成自己想要的进制数就OK了
    tips:直接转换后会发现进制数前面都带有前缀而题目要求是无前缀的所以使用replace替换成空字符
    (也可以用切片函数)

    语法:
    str.replace(old_str, new_str, count) #(要被替换掉的子串,替后的字符,最大替换次数)
    

    之后就是输出结果啦!按照题目输出样例即可

    ----END----

    解决的方法有很多 这里仅仅只是提供一种思路。
    如果觉得帮助到了你,点个赞吧!

    展开全文
  • 网络中计算机的32位IPv4地址以二进制显示,也会以点分十进制显示。而IPv6的地址是128位,是由数字和A-F组成的十六进制系统。因此,了解并且学会在其三者之间相互转换是非常重要的,让我们能够更好的了解它们。 二...

    网络中计算机的32位IPv4地址以二进制显示,也会以点分十进制显示。而IPv6的地址是128位,是由数字和A-F组成的十六进制系统。因此,了解并且学会在其三者之间相互转换是非常重要的,让我们能够更好的了解它们。

    二进制数制系统

    IPv4地址以二进制开头,仅包含0和1。主机,服务器和网络设备均使用二进制编址,即IPv4地址。

    每个地址包含32位字符串,分为四个部分,被称为二进制八位组。e.g. 11000000.10101000.00001010.00001010

    为了方便使用,IPv4地址通常表达为点分十进制记法。

    二进制位置记法

    在进入二进制之前,我们看一下日常最熟悉的十进制的位置计数法。十进制以10为基数,即各位数的值为0-9。

    千位 百位 十位 个位
    位置值 1000 100 10 1
    位置号 3 2 1 0
    计算 10³ 10² 10¹ 10⁰

    举个例子,1009 = 1*10³ + 0*10² + 0*10¹ + 9*10⁰

    相似地,2为基数的二进制也是如此,各位数为0-1

    位置号 7 6 5 4 3 2 1 0
    计算 2⁷ 2⁶ 2⁵ 2⁴ 2⁰
    位置值 128 64 32 16 8 4 2 1

    举个例子,11000000 => 1*2⁷ + 1*2⁶ + 2⁵ + 2⁴ + 2³ + 2² + 2⁰ = 192

    这样就把二进制通过位置计数法计算转换成了十进制。

    从十进制到二进制

    我们已经学会了从二进制转换到十进制,现在开始学习十进制到二进制。

    (此处我们仅研究八位二进制数)

    假设当前的十进制数为n,我们开始转换。

    如果n>=128, 此时,第一位即为1并且n减去128,否则为0.

    接着,如果n>=64,第二位为1并减去64,否则为0.

    如果n>=32, 第三位为1并减去32,否则为0.

    根据位置值一直这样进行到与1比较并记录,最后得到的八位数即为n的二进制值。

    举个例子,n=192,

    位置值 128 64 32 16 8 4 2 1
    比较 >= >= < < < < < <
    比较后的值 64 0 0 0 0 0 0 0
    二进制值 1 1 0 0 0 0 0 0

    经过一系列的比较且计算,我们得到192的二进制值为11000000,这与我们上面二进制转换成十进制结果一致。

    学习了二进制与十进制之间的相互转换,计算一下IPv4地址192.168.10.10的二进制值和11000000.10101000.00001010.00001010的十进制值,感受一下IPv4地址的转换,逐渐掌握这个技能,更好了解网络中的IPv4编址。

    十六进制数制系统

    我们解决了IPv4地址解读的问题,如开篇所说IPv6地址是以十六进制数组成。此外,在网络中,以太网MAC地址也是以十六进制数表示。

    十六进制以16为基数,其中添加了字母A-F。

    我们一起看一下十进制,二进制与十六进制值的表示

    十进制 二进制 十六进制
    0 0000 0
    1 0001 1
    2 0010 2
    3 0011 3
    4 0100 4
    5 0101 5
    6 0110 6
    7 0111 7
    8 1000 8
    9 1001 9
    10 1010 A
    11 1011 B
    12 1100 C
    13 1101 D
    14 1110 E
    16 1111 F

    IPv6地址的长度为128位,其中每四位以一个十六进制数表示,一共32个十六进制值。值得一提得是IPv6地址对其中字母不区分大小写。

    二进制到十六进制

    怎样将八位得二进制转换成十六进制呢?

    首先,我们将二进制数分为两个四位的,然后分别计算两个四位的值,最后对照上面的表即可得出。

    举个例子,二进制数为11000101,先分为两个四位的二进制数,即1100和0101。然后将他们转换成十进制数,为12和5. 根据上表,对应得出十六进制数为C5,通常写作0xC5。

    (根据表中,我们无需转换成十进制数即可对应,但为了不记忆这个表,就先把它转化成十进制)

    十进制到十六进制?只要将十进制先转换为8位二进制即可根据上述方法计算得出。

    从十六进制到十进制

    首先,将十六进制分开并转换成两组四位二进制。然后,将它们拼接。最后,将这个二进制转化成十进制即可。

    举个例子,十六进制数为9F, 根据表中对应,我们可知,其对应1001与1111。拼接后为10011111,通过计算,可得十进制数为159。




    🆗我们已经学会了二进制十进制与十六进制之间的相互转换,是不是非常简单!

    如果学会了,请给我点一个赞👍

    感谢阅读,如果有什么疑问欢迎评论,一起探讨!

    展开全文
  • #include <arpa/inet.h> // 网络编程中 包含 inet_aton函数,将点分十进制数串转换为32位网络字节序二进制值 #include <netinet/in.h> // 包含结构定义 struct in_addr{in_addr_t s_addr;}; 其中in_addr_t 为32位无...

    如题,本篇文章是为了测试IP地址转换函数 inet_aton 的实现过程,以及对二进制,八进制和十六进制 C++ 输出的测试,Ubuntu系统下,可通过 cat /usr/include/arpa/inet.h | grep inet_aton 查找原函数声明


    下面提供测试程序及其结果:

    #include <iostream>
    #include <arpa/inet.h>  // 网络编程中 包含 inet_aton函数,将点分十进制数串转换为32位网络字节序二进制值
    #include <netinet/in.h>  // 包含结构定义 struct in_addr{in_addr_t s_addr;}; 其中in_addr_t 为32位无符号整数 uint32_t
    #include <iomanip>     // hex 十六进制,oct 八进制 dec 十进制
    #include <bitset>
    
    using std::cout;
    using std::endl;
    using std::hex; // 16,10,8 
    using std::dec;
    using std::oct;
    using std::bitset;
    
    
    int main(int argc, char ** argv)
    {
            char str[] = "192.168.229.200";
            struct in_addr test;
    
            cout<<"the IP str:"<<str<<endl;
            int r = inet_aton(str,&test);
            cout<<"the IP network byte binary value:"<<bitset<32>(test.s_addr)<<endl;
            cout<<"the IP network byte dec value:"<<test.s_addr<<endl;
    
            cout<<"the IP network byte hex value:"<<hex<<test.s_addr<<endl;
            cout<<"the IP network byte oct value:"<<oct<<test.s_addr<<endl;
            return 0;
    }
    


    结果: 

    the IP str:192.168.229.200
    the IP network byte binary value:11001000111001011010100011000000
    the IP network byte dec value:3370494144
    the IP network byte hex value:c8e5a8c0
    the IP network byte oct value:31071324300
    



    
    展开全文
  • 本来想简单一点,虽然结果对,但是测试不给过。望大佬解惑 #include <iostream> using namespace std; int main() { int x; scanf("%x",&x); printf("%d",x); } 代码 #include<bits/stdc++.h&...
  • 二进制表示IP地址的方法通常都是四个八位组的二进制如“00000000 00000000 00000000 11111111” 每八个位一组,共四组,在现实生活中人的大脑不肯能记忆到这么多东西,所以人们通常采用点分十进制的方法来表示IP地址...
  • 输入一个以#结束的字符串,本题要求滤去所有的非十六进制字符(不大小写),组成一个新的表示十六进制数字的字符串,然后将其转换为十进制数后输出。如果在第一个十六进制字符之前存在字符“-”,则代表该数是负数...
  • 1.不同进制转十进制该位上的数*进制^(位数-1)求和 * 十进制(DEC): 250=2*10^2+5*10^1+0*10^0 * 二进制(BIN): 1101=1*2^3+1*2^2+0*2^1+1*2^0=...32位二进制表示,为方便记忆用点分十进制表示,是主机的唯一标识
  • IP地址有两种表示方法:整数和点分十进制` 从下面的例子可以看出,整数1945097072和115.239.211.112表示的是同一个地址 那么二者之间是如何转化的呢? 1. 整数到点分十进制 1945097072的...
  • 输入一个以#结束的字符串,本题要求滤去所有的非十六进制字符(不大小写),组成一个新的表示十六进制数字的字符串,然后将其转换为十进制数后输出。如果在第一个十六进制字符之前存在字符“-”,则代表该数是负数...
  • socket-(2)

    2017-02-23 14:45:00
    网络编程(2) 网络编程需要...函数: htons() - 本机 网络 inet_addr() - 点分十进制 十六进制 ntohs() - 网络 本机(从网络取数据到本机) inet_ntoa() - 十六进制 点分十进制 例子:简单的例子,就是...
  • AS号可以和IP地址一样做成点分十进制,如果用4字节AS号bgp 255.255,怎么把它转换成十进制呢先把255.255转换为十六进制:FF.FF其次转换为4字节,并去掉中间的点:00FF.00FF = 0x00FF00FF最后换为十进制:0x00FF00FF ...
  • 文章目录前言关键字概念关键字特点理解标识符概念组成规则组成规范见名知意驼峰规则注释概念分类行注释块注释文本注释理解进制概念进制的转换十进制<->二进制二进制<->八进制二进制<->十六进制...
  • 位运算 这里 位运算主要包括按位与(&)、按位或(|)、按位异或(^)、取反(~ )、左移(<<...(1)二进制转十进制 按权展开求和 (2)十进制转二进制 整数:除以2取余,逆序输出 小数:乘以...
  • ipv6数字转换

    千次阅读 2018-09-27 15:36:35
    于是IPv4点分十进制格式不再适用,采用十六进制表示。IPv6有3种表示方法。 (1) 冒分十六进制表示法  格式为X:X:X:X:X:X:X:X,其中每个X表示地址中的16位,以十六进制表示,例如:  ABCD:EF01:2345:6789:ABCD:...
  • inet_aton:将点分十进制IP转化为网络字节序存放在addr中,并返回该网络字节序对应的整数。 inet_addr:将点分十进制IP转化为网络字节序(二进制位的大端存储) 2. inet_ntop:十进制转十六进制 inet_pton:十六进制...
  • 4.2 IP编址

    2020-03-10 18:31:16
    IP地址由32个二进制位组成,通常用点分十进制形式表示 转存失败重新上传取消 二进制、十进制和十六进制 在IP网络中,二进制和十六进制是常用的编码方式。 转存失败重新上传取消 进制之间转换 转存失败...
  • 信令编码

    千次阅读 2012-07-16 12:28:21
    常用的七号点码有14位点码(国际点码)和24位点码(国内点码),不同的厂家的设备在配置时,所用的点码格式可能会有所不同,有的是点分十进制法,有的直接就是十六进制。下面举例说明十六进制点码对点分十进制法的...
  • HCIA第二天

    2021-01-14 21:00:07
    IPv4 32位的二进制数,表示方法,点分十进制 IPv6 128位二进制数,表示方法,冒分十六进制(-分十六进制)      十进制转二进制, ​          &...
  • 数组定义数组的内存图解数组的常见问题应用求和最大值将数组转成字符串查表法转十六进制查表版(十六进制终极版)十进制转二进制进制转换(通用版)选择排序冒泡排序普通查找方式二查找方式 数组中的数组[][]...
  • 将IP转换为数字

    2013-05-30 18:28:52
    项目中要用到对IP地址的排序,所以一般要将其转换为一个整型数,具体流程为:先将各点分十进制的IP值转为十六进制数,最后将整个十六进制组成一个字符,然后将其表示成一个十进制长整型数,在程序中范围应该使用long...
  • Day34_TCP、UDP网络编程

    2013-11-25 22:07:57
    网络编程:  网络编程需要使用通信地址 sockaddr_in ,其中的端口和IP都要做... inet_addr() - 点分十进制 十六进制 (IP)    TCP网络编程步骤:  一对多(也实现一对一):  服务器端:  1.创建so
  • 转换说明 输出%f 浮点数的十进制计数法%e或%E 浮点数的e计数法%a或%A 浮点数的p计数法%c 单个字符%d或%i 有符号十进制整数%u 无符号的十进制整数%o 无符号的八进制整数%x或%X无符号十六进制整数%% ...
  • ● IP地址是32位二进制数,点分四段十进制数表示 2、数制:技数的方法 ■ 指用一组固定的符号和统一的规划表示数值的方法 二进制(0-1) 十进制(0-9) 八进制(0-7) 十六进制(0-9,A-F) ● 数位:指数字符号在一...
  • C语言知识拾遗

    2018-10-30 14:57:00
    3.常量分类有整型常量(整数),实型常量(十进制小数,指数1.23e4代表1.23*10的四次幂),字符常量(普通字符单撇号括起ASCII码二进制方式存放,转义字符\开头)。 4.0x(阿拉伯数字0)开头表示十六进制,0开头...
  • 大家好,我是node哥哥,一个被...十进制 十六进制 进制转换 原码、反码、补码 原码 反码 补码 注意事项 DOS 什么是DOS 为什么使用DOS 怎么使用DOS命令 常用的DOS命令 学习Java之前,我想问一个问题,你们觉得有没有必
  • 一、字符串表示的IP地址需要被转化为整数(二进制数)方能使用IPv4地址:点分十进制字符串IPv6地址:十六进制字符串有时(如记录日志),我们则要把整数(二进制数)表示的IP地址转化为可读的字符串。二、三个只能用于IPv4...
  • IP地址转换函数

    千次阅读 2016-03-28 15:34:43
    人们习惯用可读性好的字符串来表示IP地址,比如用点分十进制字符串表示IPv4地址,十六进制表示IPv6地址。 下面3个函数用于点分十进制字符串表示的IPv4地址及用网络字节序整数表示的IPv4地址之间的转换:#include ...
  • IP地址转换 描述: IP地址的长度为32,即有2^32-1个地址。...本题目要求根据给定的整数IP地址表示发,将其转换为点分十进制的形式。 举个例子: 输入整数IP地址为3232235777 其对应十六进制为0xC0A80101...
  • 3. IP地址转换函数

    2018-08-30 16:57:00
    IPv4地址:点分十进制字符串 IPv6地址:十六进制字符串 有时(如记录日志),我们则要把整数(二进制数)表示的IP地址转化为可读的字符串。 二、三个只能用于IPv4地址的函数 /* 点分十进制数串 <----...

空空如也

空空如也

1 2 3 4 5
收藏数 95
精华内容 38
关键字:

十六进制转点分十进制