как перевести текстовую строку (переменная) в 16-ричный код и наоборот. С#

dimkoku

Новичок
Регистрация
31.05.2019
Сообщения
6
Благодарностей
0
Баллы
1
Добрый день!
Прошу помощи, нужно перевести текстовую строку, лежащую в переменной text, вида "djfghkdljfghdkdh1234@dkfjhj@[email protected]" в 16-ричный код. и наоборот из 16-ричного кода в текст на С#.

Нашел такое на форуме, но оно не хочет работать (Выполнение действия CSharp OwnCode. Входная строка имела неверный формат.)
C#:
var z = project.Variables["text"].Value;
project.Variables["text"].Value = Convert.ToString(Convert.ToInt32(z), 16);
Заранее спасибо!
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 691
Баллы
113

dimkoku

Новичок
Регистрация
31.05.2019
Сообщения
6
Благодарностей
0
Баллы
1

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 444
Благодарностей
1 287
Баллы
113
примерно вот так:
4D534F5051544D55534F50514D544D511A1B1C1D0E1D194D544F5351530E1D19544D534F
5722211B1F1C1D21220E1D1917161B1B1C1D
Сделано тут https://www.calc.ru/kalkulyator-kodov.html
Если вам не хватает таких вариантов или кодирует не так как надо:
62046
То в крайнем случае, научить бота заходить на ваш сайт, кодировать его и декодировать когда нужно - через get post - например.
 

dimkoku

Новичок
Регистрация
31.05.2019
Сообщения
6
Благодарностей
0
Баллы
1
Если вам не хватает таких вариантов:
То в крайнем случае, научить бота заходить на ваш сайт, кодировать его и декодировать когда нужно - через get post - например.
Я бы с радостью, но мне надо таких кодировок 2-3 миллиона в день (положу этот сайтик). И у меня старая зенка, таких кубиков нет. Неужели нет решения на С#? Уверен есть, я просто не знаю синтаксис, больше на питоне..
 

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 444
Благодарностей
1 287
Баллы
113
Я бы с радостью, но мне надо таких кодировок 2-3 миллиона в день (положу этот сайтик). И у меня старая зенка, таких кубиков нет. Неужели нет решения на С#? Уверен есть, я просто не знаю синтаксис, больше на питоне..
А почему именно 16ричный код? С чем это связано? А если например utf-16
62048

Если нет, тогда попробуйте написать в тему снипеты на заказ. Возможно кто-то быстрее сделает для вас.
 

dimkoku

Новичок
Регистрация
31.05.2019
Сообщения
6
Благодарностей
0
Баллы
1
А почему именно 16ричный код? С чем это связано? А если например utf-16
Дергаю из программы значения в 16 ричном коде и подставляю обратно свои. Если ничего не найду, придется обращаться платно, благодарю!
 

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 444
Благодарностей
1 287
Баллы
113
Дергаю из программы значения в 16 ричном коде и подставляю обратно свои. Если ничего не найду, придется обращаться платно, благодарю!
А там бесплатно же могут сделать по ссылке которуя я дал.
 
  • Спасибо
Реакции: dimkoku

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 691
Баллы
113
C#:
var z = project.Variables["text"].Value;

byte[] ba = Encoding.Default.GetBytes(z);
var hexString = BitConverter.ToString(ba);
hexString = hexString.Replace("-", "");

project.Variables["text"].Value = hexString;
результат получается не такой как в онлайн калькуляторе. там ascii коды используют , а тут просто коды символа.
 
Последнее редактирование:

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 691
Баллы
113

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 691
Баллы
113
вот код преобразования из 16-ти в строку

C#:
string hex = project.Variables["text"].Value;

int length=(hex.Length+1)/2;
byte[] arr1=new byte[length];
for (int i = 0; i < length; i++)
    arr1[i] = Convert.ToByte(hex.Substring(2 * i, 2), 16);
string dd = Encoding.Default.GetString(arr1);

project.Variables["text"].Value = dd;
 
  • Спасибо
Реакции: Gunjubasik и dimkoku

dimkoku

Новичок
Регистрация
31.05.2019
Сообщения
6
Благодарностей
0
Баллы
1
вот код преобразования из 16-ти в строку

C#:
string hex = project.Variables["text"].Value;

int length=(hex.Length+1)/2;
byte[] arr1=new byte[length];
for (int i = 0; i < length; i++)
    arr1[i] = Convert.ToByte(hex.Substring(2 * i, 2), 16);
string dd = Encoding.Default.GetString(arr1);

project.Variables["text"].Value = dd;
Спасибо огромное, то, что нужно, все работает как надо!
 

Roman*

Client
Регистрация
25.09.2013
Сообщения
1 651
Благодарностей
655
Баллы
113
Подскажите как закодировать ссылку https://zennolab.com/ в HEX и поставить вместо пробелов % , у меня получилось %68%74%74%70%73%3a%2f%2f%7a%65%6e%6e%6f%6c%61%62%2e%63%6f%6d%2f . Я так понимаю это 16 ричная система.
кодировал в сервисе asciitohex.com
 

porileenvej

Client
Регистрация
09.05.2020
Сообщения
99
Благодарностей
130
Баллы
33
Подскажите как закодировать ссылку https://zennolab.com/ в HEX и поставить вместо пробелов % , у меня получилось %68%74%74%70%73%3a%2f%2f%7a%65%6e%6e%6f%6c%61%62%2e%63%6f%6d%2f . Я так понимаю это 16 ричная система.
кодировал в сервисе asciitohex.com
В общий код
C#:
namespace ZennoLab.OwnCode
{
    /// <summary>
    /// A simple class of the common code
    /// </summary>
    public class CommonCode
    {
        /// <summary>
        /// Lock this object to mark part of code for single thread execution
        /// </summary>
        public static object SyncObject = new object();

        // Insert your code here
        
        public static string EncodePostData(string str)
        {
            byte[] data = Encoding.UTF8.GetBytes(str);
            var sbData = new StringBuilder();
            foreach(byte b in data)
            {
                sbData.AppendFormat("%{0:x2}", b);
            }
            return sbData.ToString();
        }
    }
}
Использование
C#:
return CommonCode.EncodePostData("https://zennolab.com/");
 
  • Спасибо
Реакции: Roman*

Roman*

Client
Регистрация
25.09.2013
Сообщения
1 651
Благодарностей
655
Баллы
113
В общий код
C#:
namespace ZennoLab.OwnCode
{
    /// <summary>
    /// A simple class of the common code
    /// </summary>
    public class CommonCode
    {
        /// <summary>
        /// Lock this object to mark part of code for single thread execution
        /// </summary>
        public static object SyncObject = new object();

        // Insert your code here
     
        public static string EncodePostData(string str)
        {
            byte[] data = Encoding.UTF8.GetBytes(str);
            var sbData = new StringBuilder();
            foreach(byte b in data)
            {
                sbData.AppendFormat("%{0:x2}", b);
            }
            return sbData.ToString();
        }
    }
}
Использование
C#:
return CommonCode.EncodePostData("https://zennolab.com/");
А проще способо нет, просто чтоб в екшен сишарпа вставить с переменной для домена? А то не совсем понятно что там и куда в общем коде.
P.S. хотя и так запилилось с общим кодом, благодарю за помощь.
Добрые люди еще подсказали без юзинг и код поменьше.
HEX:
byte[] ba = System.Text.Encoding.Default.GetBytes("https://zennolab.com/");
var hexString = BitConverter.ToString(ba);
hexString = hexString.Replace("-", "%");
return hexString;
 
Последнее редактирование:
  • Спасибо
Реакции: GreenWay

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)