Eg 1 Dim a as String ,b as String a = "abcde" b = string$(100,vbnullchar) '填充100个字符空间,vbnullchar是空字符 copymrmory Byval b,byval a ,10 '注意a,b是字符串,自身包含地址 b = left(b,instr(b,vbnullchar)-1) '去掉多余的vbnullchar Eg 2 dim a as string ,b as string dim pa as long ,pb as long a = "abcde" b = string$(100,vbnullchar) pa = strptr(a) pb = strptr(b) copymemcry byval pb,byval pa,10 b = left(b,instr(b,vbnullchar)-1) Eg 3 dim a as string ,b as string dim pavar as long,pbver as long dim pa as long ,pb as long a = "abcde" b = string$(100,vbnullchar) pavar = strptr(a) pbvar = strptr(b) copymemcry pa,byval pavar,4 copymemcry pb,byval pbvar,4 copymemcry byval pb,byval pa,4 b = left(b,instr(b,vbnullchar)-1)
Or按位运算对负数存在潜在问题 比如像&H10000 or &H8000 结果是 &HFFF800(错误) 因为&H8000是-32768是两字节,而&H10000是四字节,vb优先就对&H8000进行扩充,然而负数在补码的体现是最高必须是1,所以他补的两个字节位全是1,就变成了&HFFFF8000……Orz 解决的办法 &H8000& or &H10000 用&强制声明为4个字节的长整形。 or 可以是多个属性的组合 and 可以是保留我们需要的数字(00010,我想保留两位)