|
Преобразование hex string в массив байт и обратно
|
|||
---|---|---|---|
#18+
Чтение-запись из реестра REG_BINARY. В .reg-файле пишется так например: "EditFlags"=hex:02,00,00,00 Функции ввода-вывода из реестра принимают-отдают надо думать byte() Т.е. нужно преобразование "02,00,00,00"->byte() и обратно byte() ->"02,00,00,00" Ну либо "02000000"->byte() и обратно byte() ->"02000000" С форматом hex строки пока не определился, надо посмотреть что в реестре, сравнить с тем что должно быть (это можно подсмотреть-скопировать из reg-файла как строку, запятые можно в принципе убрать), если не совпадает то записать Т.е. даю на вход своей ф-ции строку, кот. надо сравнить-записать. Какой-нибудь удобный способ? А то начал гуглить, народ какие-то там ф-ции сочиняет (аля простыни), типа for next mid, step 2. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 05:13 |
|
Преобразование hex string в массив байт и обратно
|
|||
---|---|---|---|
#18+
Вот уж не знаю, что там за писатели, ухитряющиеся на эту тему сочинять простыни. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9.
Вывод: Код: plaintext 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 06:57 |
|
Преобразование hex string в массив байт и обратно
|
|||
---|---|---|---|
#18+
Сон Веры Павловны, Счас буду пробовать, но C#->VB.Net конвертер с кодом не справился (иногда пользуюсь когда не очень понимаю). И еще, с .Net 2.0 код совместим? (то что нужно сейчас будет только в .Net 4.5 но я привык писать совместимые коды) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 17:10 |
|
Преобразование hex string в массив байт и обратно
|
|||
---|---|---|---|
#18+
Сон Веры Павловны, Ну, с переводом справился (запятая-разделитель наверно оптимальна в моем случае) Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Выделенную строчку можно на что-то заменить (на не длинно и понятно)? Она с .Net 2.0 несовместима (Linq?), а мне желательно это пихнуть в модуль который подгружается .Net 2.0 совместимыми моими проектами. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 17:44 |
|
Преобразование hex string в массив байт и обратно
|
|||
---|---|---|---|
#18+
Дмитрий77 Код: vbnet 1.
StringBuilder + ForEach ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 17:50 |
|
Преобразование hex string в массив байт и обратно
|
|||
---|---|---|---|
#18+
Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
Сойдет? Если Hex="",то UBound(strMas)=-1, цикл не сработает, data2(-1) это массив без элементов, обработка ошибок вроде не нужна. Ну и потом я контролирую, что я туда подкладываю. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 18:59 |
|
Преобразование hex string в массив байт и обратно
|
|||
---|---|---|---|
#18+
В общем-то алгоритм один. Последовательно брать два символа и конвертировать их в byte. Циклом или LINQ - без разницы ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2018, 20:47 |
|
Преобразование hex string в массив байт и обратно
|
|||
---|---|---|---|
#18+
Оформил вышеприведенное как 2 ф-ции Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
Есть еще момент. На вход первой ф-ции пофиг в каком регистре подавать строку, при копировании из reg-файла она например в нижнем. А вот BitConverter.ToString(data) вроде как отдает строго в верхнем Т.е. при сравнении необходимого (в виде строки) с тем что лежит в реестре, надо приводить к одному регистру Код: vbnet 1. 2.
Вообще конечно с этим REG_BINARY намучился. C RegQueryValueEx еще непонятка возникла. Хорошо вспомнил из VB6 что вместо всего массива байтов ByVal data as byte() в lpData надо подсовывать первый элемент data(0), остальные сами волшебно заполняются. Хотя думаю через IntPtr + Marshall тоже можно. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2018, 01:56 |
|
|
start [/forum/topic.php?fid=20&msg=39621655&tid=1399442]: |
0ms |
get settings: |
7ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
60ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
others: | 332ms |
total: | 465ms |
0 / 0 |