floating-point - 运算符 XOR 和浮点变量
问题描述
我决定制作一个有趣的密码程序供个人使用。我想加密浮点(单)变量!
但是,当然,它不起作用。
好吧,整数值工作正常,但单打没有。我失去了所有的逗号和精确度。我尝试注入 ASM 代码,但没有成功。你知道有什么方法可以使它正常工作吗?
Dim MyData as Single, MyKey as Single 'Long didnt work too
MyData = 0.0017627
Key = 17.1278
MyData = MyData XOR Key
'After this I lost my data!
MyData = MyData XOR Key
好吧,你可能会说“使用 C++,不要交配大脑”,但我更喜欢使用 VB6。
哦,如果 VB.NET 中有什么有用的东西,我可以将它安装在我 2010 年的新笔记本上。
解决方案
虽然 VB6 文档声明Xor
运算符需要数字变量(https://docs.microsoft.com/en-us/previous-versions/visualstudio/visual-basic-6/aa242859(v=vs.60)),但它确实表示整数或长变量。
您正在失去您的精度,Single
因为运算符正在执行到整数类型的转换,基本上是这样的:
MyData = CLng(MyData) Xor CLng(Key)
如果您Xor
使用 0 的浮点值,您可以更好地看到这一点,它将保留操作员使用的位模式(在隐式整数转换之后)。
Debug.Print 0 Xor 45.2 ' result: 45
Debug.Print 0 Xor 45.7 ' result: 46 (rounds up)
推荐阅读
- arcgis - 使用 arcgis javascript 4.x 添加地理服务器 wms 层
- python - 尝试将 TF 模型转换为 TFLite 文件时出现错误“模块没有 lite 属性”
- mysql - 获取过去 7 天以来的行数
- r - 创建具有离散颜色的地图图
- c# - 使用 LINQ 和 SQLServer 将 int 和 string 与前导零进行比较
- java - Java String DateTime 到 toEpochMilli - 不同的区域
- amazon-web-services - 如何在不影响数据库性能的情况下处理流量峰值
- view-scope - 查看参数和@ViewScoped bean:服务器重启后恢复
- django - 无法在 Django 中使用 RadioSelect 按钮来获取输出
- wordpress - 想要在 WordPress Infinite Scroll - Ajax Load More 插件中按总帖子显示当前帖子编号