Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.022 c
1-1083061715
BALU1111
2004-04-27 14:28
2004.05.16
Проблема осей или ...?


8-1077630800
Pavelius
2004-02-24 16:53
2004.05.16
Алгоритм нахождения контура и очистки изображения от мусора


6-1080320847
Rouse_
2004-03-26 20:07
2004.05.16
Показ графики в TWebBrowser при отключенной графике в эксплорере


8-1067263921
}|{yk
2003-10-27 17:12
2004.05.16
Как можно сделать примитивнейший векторный редактор?


6-1080227029
Pr0t0n
2004-03-25 18:03
2004.05.16
SMS b Delphi Часть Вторая.




   Наверх