Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.16;
Скачать: CL | DM;

Вниз

Преобразование quoted string в control string   Найти похожие ветки 

 
Tex   (2004-04-29 10:59) [0]

Ув. мастера!
Подскажите, как преобразовать текстовое 16-ричное представление в числовое.
Т.е. из БД получаем quoted string (например "1F0000000"), а преобразовать нужно в битовый массив (#$1F#0#0#0#0#0#0#0).
Заранее спасибо.


 
Юрий Зотов ©   (2004-04-29 11:46) [1]

S - строка в HEX виде
B - packed array of byte

if Odd(Length(S)) then S := "0" + S;
SetLength(B, Length(S) div 2);
for i := 0 to High(B) do
 B[i] := (StrToInt(S[2 * i + 1]) shl 4) or StrToInt(S[2 * i + 2]);


 
Tex   (2004-04-29 12:11) [2]

При таком преобразовании строки "1F0000000" получаем сообщение
"... EConvertError with message ""F" is not a valid integer value"..."


 
Юрий Зотов ©   (2004-04-29 12:19) [3]

Сорри, маленькая неточность. Надо добавить знак $:

B[i] := (StrToInt("$" + S[2 * i + 1]) shl 4) or StrToInt("$" + S[2 * i + 2]);


 
Tex   (2004-04-29 15:41) [4]

Спасибо за помощь,
но получаем массив B(31,0,0,0,0,0,0,0),
31(dec)=1F(hex),
А нужна именно строка #$1F#0#0#0#0#0#0#0. Как преобразовать?


 
Jack128 ©   (2004-04-29 16:01) [5]


> А нужна именно строка

так?
function f(ch: char): byte;
begin
 if (ch >= "0") and (ch <= "9") then
   Result := ord(ch) - ord("0")
 else
   Result := ord(ch) - ord("A") + 10;
end;

function Convent(s: string): string;
var
 i: Integer;
begin
 SetLength(Result, Length(s));
 for i := 1 to Length(s) do Result[i] := f(s[i]);
end;


 
WebErr ©   (2004-04-29 16:09) [6]

С помощью рук и головы! :(


 
Tex   (2004-04-29 16:43) [7]

Окончательный вариант такой:
var
S, S1  : String;
B      : array of byte;
begin
if Odd(Length(S)) then S := "0" + S;
SetLength(B, Length(S) div 2);
S1 := "";
for i := 0 to High(B) do
 begin
  B[i] := (StrToInt("$" + S[2*i + 1]) shl 4) or StrToInt("$" + S[2*i + 2]);
  S1 := S1 + char(B[i]);
 end;
end;

Юрий Зотов, большое-пребольшое Вам спасибо.



Страницы: 1 вся ветка

Текущий архив: 2004.05.16;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.029 c
1-1083091603
Demi
2004-04-27 22:46
2004.05.16
Проблема открытия файла через контекстное меню Windows.


14-1082700031
karat
2004-04-23 10:00
2004.05.16
Проблема с CD-Rewriteble


14-1082726500
7@ua
2004-04-23 17:21
2004.05.16
работа с базой данных в Делфи


9-1059490261
Rooo
2003-07-29 18:51
2004.05.16
Как поставить GlScene 09b на Delphi 7?


3-1082543239
Gennadiy
2004-04-21 14:27
2004.05.16
Вопрос по поводу организации метода FIFO