Перевод массива байт в строку delphi

Перевод массива байт в строку delphi

Имееться массив байт например 52h,53h,30h,35h,39h
как его преобразовать в строку вида «RS059» .


jack128 © ( 2004-06-02 14:27 ) [1]

SetLength(s, High(ByteArray) — Low(ByteArray) + 1);
if s <> «» then
move(ByteArray[Low(ByteArray)], s[1], Length(s));

или в одну строку:
SetString(s,PChar(@ByteArray[Low(ByteArray)]),Length(ByteArray));

А можно поподробнее.


Тимохов © ( 2004-06-02 14:45 ) [4]

раньше «поподробнее» просили на совет воспользоваться тем-то и тем-то (в смысле написать код).
теперь «поподробнее» значит объяснить (наверное) код.
во времена.
Куда подробнее — одна строчка кода.

код не компилируеться — ошибка Uncompatible types. Поэтому попросил поподробнее.


Jeer © ( 2004-06-02 14:48 ) [6]

Ну что делать — народ ветшает, молодежь кроме пива ничем не интересуется.
В крайнем случае, просит отрыжку в ротик вложить:(


Тимохов © ( 2004-06-02 14:50 ) [7]


> Ruslan (02.06.04 14:48) [5]
> код не компилируеться — ошибка Uncompatible types.

с этого и надо было начинать.

не мне вас учить вопросы задавать, но все же
1. какой из приведенных варинатов не работает.
2. как у вас описан bytearray

Извиняюсь — все работает. Огромное спасибо!

Источник

Механика софтостроения

Programming is thinking, not typing

Delphi. Массив байтов в строку шестнадцатеричных значений.

Иногда бывает нужно посмотреть значение массива байтов в понятном человеку виде, чаще всего в виде пар шестнадцатеричных цифр. Задача может быть решена простой функцией, на примере которой мы увидим три подхода к работе со строками в Delphi и Паскале.

Паскалевские строки: наглядно и просто

Предлагаемый ниже способ хотя и не максимально быстрый, но близок к нему, обладая при этом наглядностью и компактностью. Наиболее быстрым решением, видимо, будет определение постоянного массива символов от Chr(0) до Chr(255) и адресация по значению очередного байта в цикле.

На экране видим: 01020304050A1923637AADFF

Функцию легко модифицировать, чтобы показывать значения в формате 0xDD или разделенные пробелом.

Результат: 0x01 0x02 0x03 0x04 0x05 0x0A 0x19 0x23 0x63 0x7A 0xAD 0xFF

«Сишные» строки: менее наглядно, но быстрее

В предыдущем примере мы использовали паскалевские строки, хотя известно, что управление ими менее эффективно, чем, например, прямые манипуляции указателями PChar в сишном стиле. Например, если открыть дизассемблер, то при каждом обращении к строке будет вызываться функция UniqueString. Это добавит несколько тактов процессора на каждое такое присвоение.

Зато первый пример был наглядный. Не зря же Вирт придумал язык! Поэтому приведем и более оптимальный по скорости, чтобы можно было сравнить.

Прямое управление указателем в ассемблерном стиле: максимальная эффективность

Комментарии

Пишет Alexey_Donskoy , чт, 15/01/2009 — 16:45

Ну что ж, для некоторых читателей это может быть полезным открытием 😉
Хотя способ с незапамятных времён широко применяется при программировании на ассемблере.
А в ряде компиляторов того же Паскаля аналогично реализован CASE (не зря же физический размер селектора ограничен одним байтом).

Добавил

Пишет st , пт, 16/01/2009 — 10:40

Добавил замечание по поводу паскалевских строк. Разумеется прямые манипуляции указателями на char будут работать быстрее.

Delphi. Массив байтов

Пишет samsim (не проверено) , чт, 19/06/2014 — 12:29

Очень полезная штука. Иногда ищешь и не можешь найти, а иногда очень нужно. Отличная статья, хорошо оформлен код.

Источник

Перевод из string в array of byte

Из string в array of byte
Всем привет нужна ваша помощь есть функция : procedure TForm1.Button1Click(Sender: TObject);.

convert string of byte 2 byte array
Есть длиииный стринг ’00 05 0F 7B’ и тд и тп, нада все это дело запихать в байтный массив (чтобы.

из array of String в array of Byte
имеется массив стринг «a:array» из 3 строк вот пример: 00111101 01101110 00011000 нужно.

Byte array to string
Добрый день! Имеется девайс: U-Prox-Keypad Задача: считать с клавиатуры символы 0-9 и *, и # и.

Аааа. Ясно.

Iopqq, надо писать не так:

Не очень понятно, что надо сделать? Вопрос такой — что имеем, в каком виде и что надо получить на выходе?

Добавлено через 6 минут
Наверное так, согласно заглавному посту в теме: имеем, к примеру, строку ‘E8B80400’. И нужна функция, которая эту строку превратит в массив байтов: $E8, $B8, $04, $00 ?

Понятно. Сейчас напишу.

Добавлено через 5 минут
Вот таким образом можно сделать:

Ясно. Сейчас напишу, как это может выглядеть.

Добавлено через 28 секунд
Ещё вопрос — данные всё таки надо получить в виде набора байтов или в виде строки?

Добавлено через 2 минуты
Т. е., есть процесс, надо получить из него, начиная с определённого адреса, набор байтов. Этот набор байтов надо забрать как есть или надо вернуть в виде строки ‘E1E2. ‘?

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Array в System::String
Как преобразовать массив байтов в строку в кодировке UTF-8? Сейчас делаю вот так: str =.

Конвертация из string в byte array
Добрых времени суток. Задача такова, спарсить текст и перевести его в массив байт. Казалось бы все.

Byte array to string и обратно
Добрый день! Имею на входе массив байт полученный из метода byte str = SignFile();.

Перевод Array of Byte в AnsiString, ShortString
Задача 1: перевести данные с массива байт в AnsiString. Задача 2: перевести данные с массива байт.

Источник

Оцените статью
( Пока оценок нет )
Поделиться с друзьями
Uchenik.top - научные работы и подготовка
0 0 голоса
Article Rating
Подписаться
Уведомить о
guest
0 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии