您好、欢迎来到现金彩票网!
当前位置:手机棋牌游戏平台 > 位异或 >

vb二进制异或

发布时间:2019-08-16 23:28 来源:未知 编辑:admin

  为什么1000001和01111111异或运算得到结果为2078214?原题是”将由大写英文字母组成的字符串的每个字符的ASCII代码转换成二进制,按位与制定秘钥01111111进行异或运算,把得到的结果转...

  为什么1000001和01111111异或运算得到结果为2078214?

  原题是”将由大写英文字母组成的字符串的每个字符的ASCII代码转换成二进制,按位与制定秘钥01111111进行异或运算,把得到的结果转换成十进制数,再转换成对应的加密字符“,所以必须用二进制进行异或运算,能否解答?展开我来答

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  因为VB本身是不存在“二进制数”这么一种数据类型的,你如果直接算1000001XOR01111111,VB会把1000001和01111111按10进制数来看待的,所以结果是2078214!

  但是,变量x中存储的是经过VB转化后的10进制数,因为VB并没有“16进制数”、“8进制数”这样的数据类型,凡是数值类型(Integer、Long、Double、Single等等)全部是10进制的!

  你说这个1000是二进制还是10进制?总不能说由0和1组成的就是二进制吧?要是你老板要发1000元工资给你,却说这是个二进制数,那么你就只能得到8元钱了!

  我不知道是哪个脑残的老师出的题目,两个数进行异或运算,运算结果与这两个数的进制是没有半毛钱关系的,比如:

  看见没有,结果不是都是10吗?所以你说的“必须用二进制进行异或运算”是错误的,除非是你的脑残老师一定要你们这么做。

  所以这条题目最简单的解决办法就是把秘钥01111111转为10进制数(即127),然后用它与大写字母的ASCII码进行异或运算,最后把运算结果再转为字符即可。下面是个例子:

  如果非得按题目要求转为二进制数再来异或,那就复杂10倍也不止了。首先,要把加密前的字符串逐个取出来,转为ASCII码,再转为二进制数(注意,二进制数要放在一个字符串变量中,因为我前面已经说了,VB中没有专门的二进制数类型的,所以如果放在数值变量中,VB会按10进制数来看待的),然后逐位与01111111进行异或运算(就是依次从上述储存二进制数的字符串变量中取出每一位数与01111111对应的位进行异或运算,如果相同就是0,不同就是1),比如:

  把得出的运算结果再转为10进制数(上面例子中就是62),然后通过这个数再得出加密后的字符。你会发现,经过这么复杂运算得到的字符,跟我上面的代码运算的结果其实是一样的!

http://lake-macquarie.com/weiyihuo/718.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有