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

Вниз

Перевод значения в бинарный код   Найти похожие ветки 

 
Валера   (2009-01-28 11:53) [0]

Приветствую всех!
Столкнулся с такой проблемой: Как перевести строку в бинарный код

К примеру; WFD76-AS7R3-UTR27-2H2DW

Изначально делал на оборот читал значение в бинарном коде и переводил его
function DecodeKey(const HexSrc: array of Byte): string;
const
StartOffset: Integer = $34;
EndOffset: Integer   = $34 + 15;
Digits: array[0..23] of CHAR = ("B", "C", "D", "F", "G", "H", "J",
  "K", "M", "P", "Q", "R", "T", "V", "W", "X", "Y", "2", "3", "4", "6", "7", "8", "9");
dLen: Integer = 29;
sLen: Integer = 15;
var
HexDigitalPID: array of CARDINAL;
Des: array of CHAR;
I, N: INTEGER;
HN, Value: CARDINAL;
begin
SetLength(HexDigitalPID, dLen);
for I := StartOffset to EndOffset do
begin
  HexDigitalPID[I - StartOffSet] := HexSrc[I];
end;
SetLength(Des, dLen + 1);
for I := dLen - 1 downto 0 do
begin
  if (((I + 1) mod 6) = 0) then
  begin
    Des[I] := "-";
  end
  else
  begin
    HN := 0;
    for N := sLen - 1 downto 0 do
    begin
      Value := (HN shl 8) or HexDigitalPID[N];
      HexDigitalPID[N] := Value div 24;
      HN    := Value mod 24;
    end;
    Des[I] := Digits[HN];
  end;
end;
Des[dLen] := Chr(0);
for I := 0 to Length(Des) do
begin
  Result := Result + Des[I];
end;
end;


 
MBo ©   (2009-01-28 13:12) [1]

Можно еще на словах алгоритм объяснить?


 
Правильный$Вася   (2009-01-28 13:40) [2]


> Как перевести строку в бинарный кодК примеру; WFD76-AS7R3-
> UTR27-2H2DW

строка и так бинарно хранится в памяти
а символы - просто способ интерпретации этих байтов


 
Ega23 ©   (2009-01-28 13:40) [3]


procedure StringToStream(Stream : TStream; const Str : string);
var
 i : Integer;
 b : byte;
begin
 for i:=1 to Length(Str) do
 begin
   b := Ord(Str[i]);
   Stream.WriteBuffer(b, 1);
 end;
end;


 
clickmaker ©   (2009-01-28 14:11) [4]


> Ega23 ©   (28.01.09 13:40) [3]

а зачем побайтно-то писать?
Stream.WriteBuffer(S, Length(S));


 
Ega23 ©   (2009-01-28 14:19) [5]


> а зачем побайтно-то писать?
> Stream.WriteBuffer(S, Length(S));


И то верно. Фигню сморозил.


 
Правильный$Вася   (2009-01-28 15:40) [6]


> а зачем побайтно-то писать?

мож, из строки минусы выкинуть надо как атрибут визуализации, не требующий хранения


 
charoey_mag   (2009-01-28 15:59) [7]

А от чего этот серийник?


 
Ega23 ©   (2009-01-28 16:54) [8]


> А от чего этот серийник?


А это совсем необязательно серийник.


 
Eraser ©   (2009-01-28 18:45) [9]

> [0] Валера   (28.01.09 11:53)

как все сложно.

в д2009 есть функции BytesOf и StringOf.

но можно и вручную ничего сложного там нет. например вот реализация перевода строки в буфер.

function BytesOf(const Val: RawByteString): TBytes;
var
 Len: Integer;
begin
 Len := Length(Val);
 SetLength(Result, Len);
 Move(Val[1], Result[0], Len);
end;

function BytesOf(const Val: AnsiChar): TBytes;
begin
 SetLength(Result, 1);
 Result[0] := Byte(Val);
end;


 
Eraser ©   (2009-01-28 18:46) [10]

PS если нужно перевести не строковые данные в строковые, то Base64 в помощь и не нужно изобретать велосипед )



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

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

Наверх




Память: 0.47 MB
Время: 0.039 c
15-1232830550
Unknown user
2009-01-24 23:55
2009.03.29
Delphi 2009 стоит ли переходить?


2-1233346301
Johnnnn
2009-01-30 23:11
2009.03.29
Доступ к чужому TChart возможен ли?


2-1233675967
Krozzz
2009-02-03 18:46
2009.03.29
Одна программа должна нажать на кнопку другой программы


4-1206779666
kalexi
2008-03-29 11:34
2009.03.29
Как узнать с какого по какой адрес занимает процесс в системе?


1-1208178791
Версия для печати
2008-04-14 17:13
2009.03.29
Как сменить цвет заголовка колонок ListView?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский