• 类型转换


    对于计算机来说,它只认识二级制的数据。图灵机的模型就是在一条长长的纸带上分好了一格格的位(bit), 每一位只能是0或1。程序就是将这条纸带每一位经过读取器,读取出结果。 二进制只能表示两种不同情况,显然是不能满足我们语言中的 各种字词的。至少得表示出数字0~9,英文字母的a~z才能满足基本沟通问题。于是就有了约定,用8个bit的不同排列对应不同的数字或者字母。例如就用“00000010”表示2,用“01100001”表示a。事实上,这个就是ASCII码表。那我们就可以将8个bit做为一组基本单元,这就是字节(byte)。有了byte,计算机就可以做一个8 bit长的方框,读完第一个方框翻译成字母,然后跳到下一个方框,依次如此直到最后。 这样就可以把一串二进制翻译形成一篇足够长的文章了。

    计算机还得要有更复杂的方框,这个就是结构体。结构体将不同的byte组成一个绑定的整体,例如int就是4个byte的整体(在32位系统中), char就是1个byte的整体。而且我们可以把结构体下套用其他结构体,这样就足够形成一个复杂的方框来套不同的bit了。 每当程序运行到这个结构体位置时,这个结构体的方框一下就将接下来的bit依次对应的放到方框中,让结构体中的每个子类型的每个bit都填充上0或1。 也正是因为这个,如果我们将结构体A赋值给“不同类型”的结构体B的时候,虽然结构体中每个bit填充了0或1。但经过计算机翻译后 导致有些byte的字母出现乱码。在进行类型转换的时候,如果是同名结构体可以直接赋值。不同类型则要小心。一个 32位的uint32_t赋值给uint64_t没有问题,因为高位补0。但反过来就可能出现错误,编译器也会报错提示。

    当我们要进行不同设备的通信的时候,我们收到的也是二级制消息,这就需要解码。为了避免我们解码用的结构体和对端设备发送时 编码用的结构体不同,需要约定成相同的形式。这个约定就是协议,如tcp协议,udp协议,IP协议等。例如IPv6的报头格式就为

  • 相关阅读:
    关于API微服务网关
    适用于企业的API管理平台
    简单的api测试
    Json,2020年api数据格式的Top 1
    API文档之团队协作
    如何进行API测试以提高程序质量
    API接口也要监控?
    春招实习_腾讯 wxg 一面 3.27 15:00
    春招实习_腾讯一面 & 二面_3.13
    春招实习_阿里一面
  • 原文地址:https://www.cnblogs.com/abc36725612/p/8177764.html
Copyright © 2020-2023  润新知