POCO C++库学习和分析 -- 数据类型转换

本文详细探讨了POCO C++库中的数据类型转换,包括ByteOrder的big-endian和little-endian概念,主机序与网络序的区别及问题,以及ByteOrder的静态函数。此外,还介绍了Any和DynamicAny的相关内容。
摘要由CSDN通过智能技术生成

POCO C++库学习和分析 -- 数据类型转换


          文章写到这里,Foundation库中的功能已经介绍过半了。在接下去介绍其他模块之前,我们先来回顾一下前面的内容。前面的内容包括了:

          1. SharedLibrary模块(插件技术)  《Foundation库SharedLibrary模块分析

          2. 线程(锁,线程,线程池,定时器,任务,主动对象) 《线程

          3. 内存管理(智能指针,内存池,自动释放的对象池,对象工厂)  《内存管理

          4. 进程(进程,进程通讯)  《进程

          5. 消息和事件(同步/异步消息传递,消息队列)  《通知和事件

         有了这些模块,我们就可以搭建起一个本地程序的框架了(当然这不包括绘图和显示,Poco库不提供这些功能)。程序的框架很重要,就如同人的骨架和血液一样,决定了一个程序的结构,间接的影响了程序的可修改性和可维护性,但这还不够,要写出一个完整的程序,我们还需要其他的一些部分,这些部分也很重要,就如同人的肌肉和衣服。

         下面介绍Foundation库中关于转换的几个类:

1. ByteOrder

         ByteOrder提供了一系列的静态函数用于字节序的转换。在使用这个类之前,让我们先了解一下它所解决问题。它主要用来解决big-endian和litter-endian的问题。

1.1 big-endian和litter-endian

         big-endian和litter-endian指的是读取存储时的数据解释方式。它们只和多字节类型的数据有关,比如说int,short,long型,而对单字节数据byte却没有影响。
                     litter-endian:将低序字节存储在起始地址(低位字节存储在内存中低位地址)。

                     big-endian:将高序字节存储在起始地址(高位字节存储在内存中低位地址)。


         举个例子,int a = 0x01020304
         在BIG-ENDIAN的情况下存放为:
                      字节号  0        1         2      3
                 数据    01      02      03    04
         在LITTLE-ENDIAN的情况下存放为:
                     字节号  0         1         2     3
               数据    04        03      02    01


          再举一个,int a = 0x1234abcd
         在BIG-ENDIAN的情况下存放为:
                     字节号  0      1  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值