字节数组与基础数据类型的转换
2009-04-25 09:21
701 查看
首先强调一点:
任何数据在内存中都是线性存储的,归根结底都是由一个字节数组表示的!
如:Integer占4个存储单元,32bit,在内存中他就是由一个长度为4的字节数组来表示!只不过在读取该类型时,系统帮我们根据不同的数据类型对数据进行捆绑读取(如果上学时学过汇编就可以想出,如果自己取的话需要把高地址的内容乘以某值后再加上低址的值)。
值得注意的是:对于Delphi中的多维动态数组,不要用类似于内存复制的函数进行复制,如CopyMemory,Move等。因为多维动态数组的内存是不连续的!
只要把握住这一原则,我想类型转换我就不多讲了
任何数据在内存中都是线性存储的,归根结底都是由一个字节数组表示的!
如:Integer占4个存储单元,32bit,在内存中他就是由一个长度为4的字节数组来表示!只不过在读取该类型时,系统帮我们根据不同的数据类型对数据进行捆绑读取(如果上学时学过汇编就可以想出,如果自己取的话需要把高地址的内容乘以某值后再加上低址的值)。
值得注意的是:对于Delphi中的多维动态数组,不要用类似于内存复制的函数进行复制,如CopyMemory,Move等。因为多维动态数组的内存是不连续的!
只要把握住这一原则,我想类型转换我就不多讲了
//Word与ByteArr的互转 一、从ByteArr转为Word(Integer也一样,不过存储单元占的位数不一样) 从字节数组中的第10个元素开始,转为Word类型的数据! 方法1: type TByteArrs=array[0..20] of byte; var A1 : TByteArrs; B : Word; begin A1[0] := 0; A1[1] := 1; A1[10] := 3; A1[11] := 0; Move(A1[10],B,2);//因Word占2个存储单元,故需要复制2个数组长度,也可以用SizeOf(Word)或SizeOf(Integer) ShowMessage(inttostr(B)); end; 方法2: type TByteArrs=array[0..20] of byte; var A1 : TByteArrs; B : PWord; begin A1[0] := 0; A1[1] := 1; A1[10] := 3; A1[11] := 0; B := @A1[10];//直接把Pword指针指向字节数组的A1[10]元素上,然后系统帮我们捆绑读取该类型的值! ShowMessage(inttostr(B^)); end; 二、Word(Integer)转为字节数组 //这里仅仅演示用指针直接指向word类型数据所占存储单元的首址,如果想复制一份,可用Move type TWordByte=array of byte; var bs : TWordByte; b : Word; begin b:=10; bs:=@b ;//把b的首址传给bs,由于Word占用2个存储单元,转换就为2个数组 ShowMessageFmt('$%.2d, $%.2d', [ bs[1], bs[0]]); end;
相关文章推荐
- 字节数组与基础数据类型的转换
- C#之基础数据类型和字节数组的转换
- Java基础小知识——基本数据类型和字符串以及字节数组的转换
- C#基础数据类型与字节数组(内存中的数据格式)相互转换(BitConverter 类)
- 将基础数据类型与字节数组相互转换
- C#基础数据类型与字节数组(内存中的数据格式)相互转换(BitConverter 类)
- Java基础小知识——基本数据类型和字符串以及字节数组的转换
- C#基础数据类型与字节数组(内存中的数据格式)相互转换(BitConverter 类)
- 【语言基础】c++ 基本数据类型与字节数组(string,char [] )之间的转化方法
- JAVA语言基础:数据类型的转换 数组的概念
- Java中字节数组与基本数据类型的转换
- 常用数据类型与字节数组的转换!
- 在C#中将任意数值类型数据与字节数组相互转换的一个方法
- 【JAVA基础回顾】数据类型转换与字节位
- Java中的移位操作以及基本数据类型转换成字节数组【收集】
- 多种数据类型与byte[]字节数组的转换记录
- Java中的移位操作以及基本数据类型转换成字节数组【收集】
- JAVA基础学习之String、StringBuffer、StringBuilder、基本数据类型的使用、整形进制转换、集合Collection、Vector、ArrayList、LinkedList、HashSet、TreeSet等(3)
- Java 基础类型转换byte数组, byte数组转换基础类型
- Java基础知识 二(关键字、标识符、注释、数据类型、数据类型的转换)