大家好。
在DELPHI中,16进制的数据怎么表示?是不是0X12类似的?
如何让一个PCHAR类型的变量赋上16进制的数据,比如:
A:PCHAR;
A:=[0x10,0x12,0x11,0x55,.......,0x88];
就是让PCHAR里面的内容是16进制的整数?
可不可以?
多谢大家了。
在DELPHI中,16进制的数据怎么表示?是不是0X12类似的?
如何让一个PCHAR类型的变量赋上16进制的数据,比如:
A:PCHAR;
A:=[0x10,0x12,0x11,0x55,.......,0x88];
就是让PCHAR里面的内容是16进制的整数?
可不可以?
多谢大家了。
解决方案 »
- 如何stringgrid中设定满足条件的单元格的背景颜色
- *****SOS******,要死人了!!!!!!!
- 打印走纸问题。
- 求实数的n次方根函数,输入一个实数,得到一个它的整数(1-9)次方根,急!!!
- 如何分月统计费用并在dbgrid中显示出各月记录(统计值)?
- 寻找黑龙江牡丹江地区编程爱好者一起学习(可交学费)
- oracle存储过程中如何给传入的参数(字符串类型),参数前后自动加上单引号?
- C#调用delphi生成的dll文件,传递二维数组问题求大神解.
- 急急(为什么我想给100分,可是只能强制给25分呢,呜呜)!内存中获取远程传来的图像并保存到硬盘或转换成jpg!
- 编程会改变人的性格??
- 推荐一下socket编程方面的书籍,最好可以下载的。
- 一个迄今为止最难解决的问题——关于VCD(DAT)文件剪切一个片段,并保存。谢谢!
var
p:pchar;
A:array[0..1]of byte;
begin
a[0]:=$01;
a[1]:=$DF;
p:=@a;//p指针指向数组a
end;
const
A: PChar = #$10 + #$12 + #$11 + #$55 + ... + #$88;
begin
// use A
end;$ 代表十六进制 , # 代表字符 ,这样生成的 A 在内存中就是:10 12 11 55 ... 88
那样赋值只能赋给静态,如果是变量呢?如:b:=#$11;A:=A+b;
这样就不行。TO wzrlover(流光逝水):
p:=@a;//p指针指向数组a 这样好像不行,因为单步跟踪进去,发现在P
里面的值是一些ASC乱码,不是想要的$01、$DF。谢谢两位,不过大家还有什么方法吗?
S:String;
i:integer;
P:PChar;
begin
i:=$F11;
S:=IntToHex(i,8);
while S[1]='0' do
Delete(S,1,1);
P:=@S[1];//P就指向这个十六进制串的开始
end;
pbyte(a+i)^ := $14;
安整数赋值即可。
再调用IntToHex
var
A: PChar;
B: string;
begin
B := #$39#$40#$41#$42#$0; // 内存布局: 39 40 41 42 00
A := @B[1];
ShowMessage(A);
B := #$41#$42#$43#$44#$0; // 内存布局: 41 42 43 44 00
A := @B[1];
ShowMessage(A);
B := #$42#$43#$44 + B; // 内存布局: 42 43 44 41 42 43 44 00
A := @B[1];
ShowMessage(A);
end;由于 string 的内存分配是编译器自动管理的,所以我们不用操心内存的泄漏--爽。 :(然后通过 PChar 变量 A 访问这些内容。需要说明的是:由于地址分配是由编译器处理的,我们无法控制,上面每一次赋值的结果都要用到 A := @B[1] ,因为每一次 B 的地址都不一样。