VB内部采用Unicode编码,在这种编码格式下,任何字符(包括半角的字母、数字、符号以及全角的汉字、符号)都是占用两个字节的。因此,Len("1111徐")的返回值是5,表示5个字符,而LenB("1111徐")的返回值是10,表示占用10个字节。
创新互联凭借专业的设计团队扎实的技术支持、优质高效的服务意识和丰厚的资源优势,提供专业的网站策划、网站建设、成都做网站、网站优化、软件开发、网站改版等服务,在成都十载的网站建设设计经验,为成都上1000+中小型企业策划设计了网站。
要想按ANSI编码格式来获取字符串的字节数,必须这样:
LenB(StrConv("1111徐", vbFromUnicode))
要注意哦,虽然返回值是6,但这个数与这个字符串在内存中的实际占用字节数是不相符的哦!
Dim fs As New System.IO.FileStream("D:\1.txt", IO.FileMode.Open, IO.FileAccess.Read)
Dim buffer(3) As Char
Dim re As New System.IO.BinaryReader(fs)
re.Read(buffer, 0, 4)'表示从0位开始读4位
MsgBox(buffer)
把这个字节值
与1进行And运算,如果结果为1,则第1位为1,否则就是0;
与2(即2进制数10)进行And运算,如果结果为2,则第2位为1,否则就是0;
与4(即2进制数100)进行And运算,如果结果为4,则第3位为1,否则就是0;
与8(即2进制数1000)进行And运算,如果结果为8,则第4位为1,否则就是0;
与16(即2进制数10000)进行And运算,如果结果为16,则第5位为1,否则就是0;
与32(即2进制数100000)进行And运算,如果结果为32,则第6位为1,否则就是0;
与64(即2进制数1000000)进行And运算,如果结果为64,则第7位为1,否则就是0;
与128(即2进制数10000000)进行And运算,如果结果为128,则第8位为1,否则就是0。
简言之就是把每一位都与1进行And运算,如果该位运算结果仍是1,那么该位就肯定是1,因为只有1和1进行And运算结果才是1,而0和1或者0和0运算结果都是0。
或者也可以把这个数与2进行除法运算,如果有余数(即1),则说明第1位为1,否则就是0,然后再继续把商与2进行除法运算,有余数则第2位为1,否则为0,依此类推,直到最后数值为1或0,无法继续除2为止。
说白了,其实就是把这个数转换为二进制数的形式,然后哪个位是1哪个位是0就一目了然了。
位操作用逻辑比较简单
某一位来说,
设为0用 and 0
1 and 0 = 0
0 and 0 = 0
设为1用 or 1
1 or 1 = 1
0 or 1 = 1
设为反向用 xor 1
1 xor 1 = 0
0 xor 1 = 1
你要判断某一位,就用它去and一个那一位等于1的数
例如
判断最高位是不是为1,就看
6 and 128(二进制为1000 0000) 是不是最后还是128(二进制为1000 0000)
因为根据and,如果第一位是1,最后肯定是10000....
如果第一位是0,那就是000000了
判断其它位,你就自己构造and或者or的数就行了
第二位就 and 0100 0000