从专业人员到超级专业人员的任何问题 - 1。 - 页 7 1234567891011121314...45 新评论 Vasiliy Sokolov 2011.01.22 19:52 #61 sergeev: 是的,我认为在这种情况下我们可以不使用哈希。我对哈希值的建议过于草率。:) 如果这个选项适合Vasily--我们将简单地把所有参数放入字符串。这个字符串将是类的标识符。 但这也是正确的。毕竟,在这种情况下,根本不需要加密保护。然而,不好的是,你仍然需要将所有参数的字符串转换成一个具体的、最好是32位的唯一数字,为此你可能需要使用哈希函数。 该死的,在MQL中没有像反转、偏移等位操作符。是的,在MQL中做这些事有点难。 Андрей 2011.01.22 19:53 #62 sergeev: 是的,在这种情况下,我们可以不使用哈希值。 如果这个变体适合Vasiliy,那么我们就把所有的参数放入字符串中。这个字符串将是类的标识符。 好吧,如果你实现了java哈希集,那就更有意思了...... 就像...匹配的哈希->排序的集合->元素... 最主要的是,一个排序的列表与哈希值相关。 . 然后一切也会 "飞 "起来(虽然,低低的...)。 Aleksandr Chugunov 2011.01.22 20:02 #63 C-4: 目标: 通过唯一的ID(最好是长类型)来唯一地识别一个类的实例。唯一的ID应该考虑属于类的变量值的唯一性而形成。 天啊!我将在周一有同样的任务,))))。 我将不能使用一个字符串,因为我的长度有限--我需要根据它来命名对象。 我在想...你也许可以同时使用两种散列算法--这将大大降低非唯一性的概率...还是我弄错了? --- 2011.01.22 20:04 #64 C-4: 该死的,在MQL中没有像反转、偏移等位操作符。是的,在MQL中很难做到这一切。 为什么不呢?都在那里!https://docs.mql4.com/ru/basis/operations/bit Igor Makanu 2011.01.22 20:08 #65 C-4: 该死的,MQL没有位操作符,如反转、偏移等。是的,在MQL中很难做到这一切。 https://docs.mql4.com/ru/basis/operations/assign将y的二进制表示法向右移动x位,y>=x。 将y的二进制表示法向左移动x位,y<<=x。 y和x的二进制表示的比特和操作 y &= x; 二进制表示y和x的位数OR y |= x。 位数排他性OR操作 的二进制表示y和x y ^= x。 也许y != x;也能发挥作用 SZY:关于名字的唯一性等。- 像往常一样,问题归结为一个老问题:如何在节省内存的同时不损失性能。 要么使用具有唯一名称的字符串数组,从而增加数据量,要么使用一个函数,该函数将使用基于输入数据的算法来形成唯一的名称,从而降低性能但节省内存 --- 2011.01.22 20:11 #66 IgorM: https://docs.mql4.com/ru/basis/operations/assignвозможно and y != x; works 不在那里。 但在这里https://docs.mql4.com/ru/basis/operations/bit Igor Makanu 2011.01.22 20:18 #67 sergeev: 不在那里。 但在这里https://docs.mql4.com/ru/basis/operations/bit 不在那里!;) SZY: 这个信息是一样的,只是赋值和位操作的例子是一样的,因为我的链接说 "位操作只对整数进行",如果你想的话,我可以告诉你确切的链接;),我想C-4 会明白在哪里和哪里阅读帮助的 Vasiliy Sokolov 2011.01.22 20:56 #68 下面是一个Adler32哈希函数的工作 实例。 //+------------------------------------------------------------------+ //| Adler32_Sample.mq5 | //| Copyright 2010, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2010, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { //--- string a="mesage 1: Hello word"; string b="message 2: It's simple code"; string c="message 2: It's simple codes"; Print(adler32(a)); Print(adler32(b)); Print(adler32(c)); } //+------------------------------------------------------------------+ ulong adler32(string buf) { ulong s1 = 1; ulong s2 = 0; uint buflength=StringLen(buf); uchar array[]; ArrayResize(array, buflength,0); StringToCharArray(buf, array, 0, -1, CP_ACP); for (uint n=0; n<buflength; n++) { s1 = (s1 + array[n]) % 65521; s2 = (s2 + s1) % 65521; } return ((s2 << 16) + s1); } 该函数的基本代码取自维基百科,并为MQL5稍作修改。下面是脚本工作的结果。 2011.01.22 22:50:10 BitOperations (#MCD,MN1) 2333149633 2011.01.22 22:50:10 BitOperations (#MCD,MN1) 2169506126 2011.01.22 22:50:10 BitOperations (#MCD,MN1) 1202325230 正如你所看到的,这个函数返回的所有值都是绝对不同的,尽管字符串本身并没有什么不同。 --- 2011.01.22 20:58 #69 C-4: 下面是一个Adler32哈希函数的工作 实例。 该函数的基本代码取自维基百科,并为MQL5稍作修改。下面是脚本工作的结果。 正如你所看到的,这个函数返回的所有值都是绝对不同的,尽管字符串本身并没有什么不同。 伟大的。 如果你可以的话(为了不丢失),把它放到MQL5代码库中。 Vasiliy Sokolov 2011.01.22 20:59 #70 sergeev: 伟大的。 如果可以的话(为了不丢失它),把它放在MQL5代码库中。 奥基。 1234567891011121314...45 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
是的,我认为在这种情况下我们可以不使用哈希。我对哈希值的建议过于草率。:)
如果这个选项适合Vasily--我们将简单地把所有参数放入字符串。这个字符串将是类的标识符。
但这也是正确的。毕竟,在这种情况下,根本不需要加密保护。然而,不好的是,你仍然需要将所有参数的字符串转换成一个具体的、最好是32位的唯一数字,为此你可能需要使用哈希函数。
该死的,在MQL中没有像反转、偏移等位操作符。是的,在MQL中做这些事有点难。
是的,在这种情况下,我们可以不使用哈希值。
如果这个变体适合Vasiliy,那么我们就把所有的参数放入字符串中。这个字符串将是类的标识符。
就像...匹配的哈希->排序的集合->元素...
最主要的是,一个排序的列表与哈希值相关。
.
然后一切也会 "飞 "起来(虽然,低低的...)。
目标: 通过唯一的ID(最好是长类型)来唯一地识别一个类的实例。唯一的ID应该考虑属于类的变量值的唯一性而形成。
天啊!我将在周一有同样的任务,))))。
我将不能使用一个字符串,因为我的长度有限--我需要根据它来命名对象。
我在想...你也许可以同时使用两种散列算法--这将大大降低非唯一性的概率...还是我弄错了?
该死的,在MQL中没有像反转、偏移等位操作符。是的,在MQL中很难做到这一切。
为什么不呢?都在那里!https://docs.mql4.com/ru/basis/operations/bit
该死的,MQL没有位操作符,如反转、偏移等。是的,在MQL中很难做到这一切。
将y的二进制表示法向左移动x位,y<<=x。
y和x的二进制表示的比特和操作 y &= x;
二进制表示y和x的位数OR y |= x。
位数排他性OR操作
的二进制表示y和x y ^= x。
也许y != x;也能发挥作用
SZY:关于名字的唯一性等。- 像往常一样,问题归结为一个老问题:如何在节省内存的同时不损失性能。
要么使用具有唯一名称的字符串数组,从而增加数据量,要么使用一个函数,该函数将使用基于输入数据的算法来形成唯一的名称,从而降低性能但节省内存
https://docs.mql4.com/ru/basis/operations/assignвозможно and y != x; works
不在那里。
但在这里https://docs.mql4.com/ru/basis/operations/bit
不在那里。
但在这里https://docs.mql4.com/ru/basis/operations/bit
不在那里!;)
SZY: 这个信息是一样的,只是赋值和位操作的例子是一样的,因为我的链接说 "位操作只对整数进行",如果你想的话,我可以告诉你确切的链接;),我想C-4 会明白在哪里和哪里阅读帮助的
下面是一个Adler32哈希函数的工作 实例。
该函数的基本代码取自维基百科,并为MQL5稍作修改。下面是脚本工作的结果。
2011.01.22 22:50:10 BitOperations (#MCD,MN1) 2333149633
2011.01.22 22:50:10 BitOperations (#MCD,MN1) 2169506126
2011.01.22 22:50:10 BitOperations (#MCD,MN1) 1202325230
正如你所看到的,这个函数返回的所有值都是绝对不同的,尽管字符串本身并没有什么不同。
下面是一个Adler32哈希函数的工作 实例。
该函数的基本代码取自维基百科,并为MQL5稍作修改。下面是脚本工作的结果。
正如你所看到的,这个函数返回的所有值都是绝对不同的,尽管字符串本身并没有什么不同。
伟大的。
如果你可以的话(为了不丢失),把它放到MQL5代码库中。
伟大的。
如果可以的话(为了不丢失它),把它放在MQL5代码库中。
奥基。