|
Как поменять местами слова в двойном слове?
|
|||
---|---|---|---|
#18+
Задача в следующем. Есть число занимающее двойное слово (4 байта). Нужно в нем старшее и младшее слово поменять местами. Как это можно сделать на VBS? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2011, 18:34 |
|
Как поменять местами слова в двойном слове?
|
|||
---|---|---|---|
#18+
smntЕсть число можно уточнить, ГДЕ оно есть? В переменной? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2011, 18:40 |
|
Как поменять местами слова в двойном слове?
|
|||
---|---|---|---|
#18+
конечно в переменной... ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2011, 18:49 |
|
Как поменять местами слова в двойном слове?
|
|||
---|---|---|---|
#18+
Почему, собственно, спрашиваю Вот, собственно, код перестановки: Код: plaintext 1. 2.
Если исходное число является, к примеру, шестнадцатиричным текстом - тогда все проще ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2011, 18:51 |
|
Как поменять местами слова в двойном слове?
|
|||
---|---|---|---|
#18+
smntконечно в переменной... в переменную оно как попадает? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2011, 18:54 |
|
Как поменять местами слова в двойном слове?
|
|||
---|---|---|---|
#18+
В переменную оно попадает из контроллера (ПЛК). А что делать, если в 8 или 16 разряде может быть 1? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2011, 19:08 |
|
Как поменять местами слова в двойном слове?
|
|||
---|---|---|---|
#18+
гм Код: plaintext 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2011, 19:10 |
|
Как поменять местами слова в двойном слове?
|
|||
---|---|---|---|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2011, 00:00 |
|
Как поменять местами слова в двойном слове?
|
|||
---|---|---|---|
#18+
Shocker.Proтакая штука работает в VB, но в VBS не прокатывает - не понимает Val конструкции &H В VBS нет функции Val(). Есть Eval(). Она конструкцию &H понимает. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2011, 00:10 |
|
Как поменять местами слова в двойном слове?
|
|||
---|---|---|---|
#18+
скукотищаShocker.Proтакая штука работает в VB, но в VBS не прокатывает - не понимает Val конструкции &H В VBS нет функции Val(). Есть Eval(). Она конструкцию &H понимает. Спасибо, скукотища, я ждал подсказки Итак, тогда задача решается в одну строку: Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2011, 00:17 |
|
Как поменять местами слова в двойном слове?
|
|||
---|---|---|---|
#18+
Shocker.Pro, авторИтак, тогда задача решается в одну строку: ...А если подумать ? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2011, 00:23 |
|
Как поменять местами слова в двойном слове?
|
|||
---|---|---|---|
#18+
Shocker.ProИтак, тогда задача решается в одну строку: Код: plaintext
i = 10 :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2011, 00:26 |
|
Как поменять местами слова в двойном слове?
|
|||
---|---|---|---|
#18+
скукотищаShocker.Pro, авторИтак, тогда задача решается в одну строку: ...А если подумать ? ах, да, потерял Код: plaintext
подловил, таки, отомстил ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2011, 00:26 |
|
Как поменять местами слова в двойном слове?
|
|||
---|---|---|---|
#18+
ZVI, я совсем плох :) ща сделаем ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2011, 00:28 |
|
Как поменять местами слова в двойном слове?
|
|||
---|---|---|---|
#18+
ZVI, +1 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2011, 00:28 |
|
Как поменять местами слова в двойном слове?
|
|||
---|---|---|---|
#18+
Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2011, 00:31 |
|
Как поменять местами слова в двойном слове?
|
|||
---|---|---|---|
#18+
Shocker.Pro, ещё не все, Вам осталось побороть типы, например, для i = &H8000 ?VarType(&H8000)=vbLong False ?Hex(&H8000) 8000 Но: ?Hex(Clng(&H8000)) FFFF 8000 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2011, 00:55 |
|
Как поменять местами слова в двойном слове?
|
|||
---|---|---|---|
#18+
ZVIShocker.Pro, ещё не все, Вам осталось побороть типы, например, для i = &H8000 Хотя у ТС может и не Long там в 4-х байтах, а 2 Integer-а, тогда у Вас - правильнее, разве что работа со строками все же помедленее. Зато у ТС теперь есть выбор :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2011, 01:02 |
|
Как поменять местами слова в двойном слове?
|
|||
---|---|---|---|
#18+
Ну присвоение типа i=&H8000 мы используем только для теста, а автор получает полный лонг в переменную, я так думаю, так что наверное все хорошо будет. Что касается скорости - думаю, что мой вариант быстрее твоего, но замерять щас лень ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2011, 01:13 |
|
Как поменять местами слова в двойном слове?
|
|||
---|---|---|---|
#18+
Shocker.Pro, Что касается скорости - думаю, что мой вариант быстрее твоего, но замерять щас лень Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26.
Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2011, 01:29 |
|
Как поменять местами слова в двойном слове?
|
|||
---|---|---|---|
#18+
Shocker.ProНу присвоение типа i=&H8000 мы используем только для теста, а автор получает полный лонг в переменную, я так думаю, так что наверное все хорошо будет.Да, согласен. Надеюсь, ТС учтёт, что в VBS все переменные типа Variant и поэтому преобразование типов лучше делать явно. Что касается скорости - думаю, что мой вариант быстрее твоего, но замерять щас леньНу мне то не лень, на моем компе мой вариант быстрее в 2 раза: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2011, 01:29 |
|
Как поменять местами слова в двойном слове?
|
|||
---|---|---|---|
#18+
Скукотища, спасибо - порадовал и результатом получше и кодом на VBS Что-то мы вдвоем на одного ... :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2011, 01:34 |
|
Как поменять местами слова в двойном слове?
|
|||
---|---|---|---|
#18+
ZVIЧто-то мы вдвоем на одного ... :-) ничего, так мне и надо :) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2011, 01:36 |
|
Как поменять местами слова в двойном слове?
|
|||
---|---|---|---|
#18+
может мне и изменяет памфть, но поменять местами это практически как сдвинуть на определенное кол-во бит а это простейшие операции умножения и деления вот мой вариант критикуйте :) Код: plaintext
правда нужно предусмотреть вариант при переполнении т.е при i = &H15C413F2 при умножении будет ошибка надо будет отрезать старшую часть числа ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2011, 09:44 |
|
Как поменять местами слова в двойном слове?
|
|||
---|---|---|---|
#18+
HandKot, это-то вариант я предложил здесь 11100172 и он бы работал, если бы не тот факт, что 16-й разряд используется под знак числа - это вносит те искажения, которые и компенсирует код ZVI 11101005 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2011, 09:53 |
|
|
start [/forum/topic.php?fid=60&msg=37389916&tid=2158502]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
191ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 296ms |
0 / 0 |