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

Вниз

Перевод из двоичной в 16-ю   Найти похожие ветки 

 
maxXP ©   (2007-03-14 17:28) [0]

Подскажите есть ли встроенная функция перевода из двоичной в шесн-ю?


 
eXPell ©   (2007-03-14 17:32) [1]

помоему руками надо делать))


 
Ega23 ©   (2007-03-14 17:34) [2]


> maxXP ©   (14.03.07 17:28)


Парень, они ВСЕ в двоичной.


 
Anatoly Podgoretsky ©   (2007-03-14 19:14) [3]

> maxXP  (14.03.2007 17:28:00)  [0]

Что такое двоичное?


 
maxXP ©   (2007-03-15 14:48) [4]

для перевода чисел из двоичной системы в шестнадцатеричную


 
DrPass ©   (2007-03-15 15:19) [5]


> maxXP ©   (15.03.07 14:48) [4]

Если числа у тебя хранятся в виде текста, то BinToHex. Если в виде соббсно чисел, то вопрос в орешник :)


 
maxXP ©   (2007-03-23 14:48) [6]

Пожалуйста объясните

Проблема такая я генерирую строку, а затем мне надо преобразовать её в HEX и вставить в процедуру



var res: string;

...
res:="1010110"; // 56  в Hex

{так должно быть}   Lpt.WritePort(GetCurrentPort,LPT_EPP_ADDRESS,$56); //1010110

{надо преобр строку в HEX, непонятно, что  за параметр Buffer  в процедуре}   Lpt.WritePort(GetCurrentPort,LPT_EPP_ADDRESS,BinToHex(???, Pchar(res), Length(res)) );

//Delphi syntax: procedure BinToHex(Buffer, Text: PChar; BufSize: Integer);


Подскажите как правильно сделать преобразование.

Извините если вопрос составлен не грамотно =(


 
Сергей М. ©   (2007-03-23 15:02) [7]


> maxXP ©   (23.03.07 14:48) [6]


Сам-то как думаешь ?


 
umbra ©   (2007-03-23 15:56) [8]


> Buffer

это строка, в которую вернется результат преобразования.


 
maxXP ©   (2007-03-23 16:21) [9]

Форумы с названием Основная («Начинающим») создан для таких вопросов. Думаю я внятно объяснил суть проблемы. Буду благодарен за ответ или подсказку.


 
Сергей М. ©   (2007-03-23 16:22) [10]


> maxXP ©   (23.03.07 16:21) [9]


Ну если именно ТАК ты подошел, то НЕТ


 
maxXP ©   (2007-03-23 16:29) [11]


> umbra

Спасибо  за объяснение.

Не могли бы вы показать пример корректного преобразования строки с двоичным  значением    "1010110" в 16 , не получается никак =(


 
Хаванагил   (2007-03-23 16:30) [12]


> maxXP ©   (23.03.07 14:48) [6]

имхо тебе нужно сразу делать BinToInt и результат передавать в ЛПТ
типо того:

Lpt.WritePort(GetCurrentPort,LPT_EPP_ADDRESS, BinToInt(res));


 
Хаванагил   (2007-03-23 16:31) [13]

потомушто BinToHex возвращает строчку. а тебе нужно число.


 
Сергей М. ©   (2007-03-23 16:34) [14]


> Хаванагил


Кгхмм ...
Мда..


 
Хаванагил   (2007-03-23 16:37) [15]


> Сергей М. ©   (23.03.07 16:34) [14]

что не так?


 
maxXP ©   (2007-03-23 16:38) [16]


> Хаванагил  


BinToInt - такой функции нет


 
Хаванагил   (2007-03-23 16:40) [17]


> maxXP ©   (23.03.07 16:38) [16]

ну напиши :)


 
Сергей М. ©   (2007-03-23 16:43) [18]


> maxXP ©   (23.03.07 16:38) [16]
> BinToInt - такой функции нет


Угу, нет.
И BinToХрен() - такой функции тоже нет.
ЧТО тебе мешает ее реализовать самому ?)


 
Плохиш ©   (2007-03-23 16:46) [19]

Афигеть, человек с высшим образованием (по анкете) не умеет скадывать степени двойки, не говоря уж о преобразовании чисел в разные системы счисления. И ещё смеет прикрываться термином "начинающий" :-(

maxXP, тебе до начинающего как ползком до южного полюса...


 
Сергей М. ©   (2007-03-23 16:51) [20]


> Плохиш ©   (23.03.07 16:46) [19]
>
> Афигеть, человек с высшим образованием


Мож оно арбузолитейное ?)


 
Плохиш ©   (2007-03-23 16:53) [21]


> Мож оно арбузолитейное

Вот и пусть льёт свои арбузы, хотя, думается, что от-туда его уже выперли и он решил, что программером самое то :@


 
maxXP ©   (2007-03-23 16:54) [22]

Ой   рассмешили!

*Может я экономист.
*Во вторых я умею делать преобразования ,но может есть чтонить готовое.
*Я не программист по образованию поэтому и прошу помощи, просто надо подправить кое что
* Ребята вы чегоКонференция для начинающих, а также для тех, кому сложно объяснить чего он хочет. Просьба к участникам быть взаимовежливыми, профессионалам отдельная просьба - быть снисходительными.  Пожалуйста ударение на снисходительными.

Ну напишу сам функцию БЕЗ проблем, но когда я отвечаю на вопросы в своей области знаний я не издеваюсь  =)

Добрее надо быть.


 
Плохиш ©   (2007-03-23 16:58) [23]


> maxXP ©   (23.03.07 16:54) [22]
> Ой   рассмешили!
>
> *Может я экономист.

Не верю.

> но когда я отвечаю на вопросы в своей области знаний я не
> издеваюсь  

Ответь на вопрос, сколько я должен потратить денег через полчаса, чтобы через час у меня было денег в 5 раз больше?


 
Сергей М. ©   (2007-03-23 17:01) [24]


> maxXP ©   (23.03.07 16:54) [22]
>
> Ой   рассмешили!
>
> *Может я экономист.


Ну и нахрена экономисту нужны преобразования между различными системами представления чисел ?)
Чем традиционная обезъянья десятичная не угодила ?

Поясни ...


 
maxXP ©   (2007-03-23 17:05) [25]

НЕ ФЛУДИТЕ. ЭТОТ ФОРУМ ДЛЯ ЛЮБЫХ ВОПРОСОВ! Нет желания не отвечайте.  

> Плохиш ©
Закопай на поле чудес и вырастит деревце =))))))))


 
Плохиш ©   (2007-03-23 17:07) [26]


> maxXP ©   (23.03.07 17:05) [25]

Понятно, значит и фраза "когда я отвечаю на вопросы в своей области знаний я не издеваюсь" такое же враньё, что и про экономиста...


 
maxXP ©   (2007-03-23 17:07) [27]


> Сергей М

Специально  для сергея потому-что в исходной функции засылки в лпт используется 16-ная.

Странно а я думал что вы телепаты.


 
Alexdeil   (2007-03-23 17:12) [28]

Умников слишком много, дерзайте (а как из int в Hex, я думаю Вы знаете) :

// Binary to Integer

function BinToInt(Value: string): Integer;
var
  i, iValueSize: Integer;
begin
  Result := 0;
  iValueSize := Length(Value);
  for i := iValueSize downto 1 do
    if Value[i] = "1" then Result := Result + (1 shl (iValueSize - i));
end;

function HexToBin(Hexadecimal: string): string;
const
  BCD: array [0..15] of string =
    ("0000", "0001", "0010", "0011", "0100", "0101", "0110", "0111",
    "1000", "1001", "1010", "1011", "1100", "1101", "1110", "1111");
var
  i: integer;
begin
  for i := Length(Hexadecimal) downto 1 do
    Result := BCD[StrToInt("$" + Hexadecimal[i])] + Result;
end;

// Integer to Binary

function IntToBin1(Value: Longint; Digits: Integer): string;
var
  i: Integer;
begin
  Result := "";
  for i := Digits downto 0 do
    if Value and (1 shl i) <> 0 then
      Result := Result + "1"
  else
    Result := Result + "0";
end;

function IntToBin2(d: Longint): string;
var
  x, p: Integer;
  bin: string;
begin
  bin := "";
  for x := 1 to 8 * SizeOf(d) do
  begin
    if Odd(d) then bin := "1" + bin
    else
      bin := "0" + bin;
    d := d shr 1;
  end;
  Delete(bin, 1, 8 * ((Pos("1", bin) - 1) div 8));
  Result := bin;
end;


 
Сергей М. ©   (2007-03-23 17:13) [29]


> maxXP ©   (23.03.07 17:07) [27]


> в исходной функции засылки в лпт используется 16-ная


Да нам, понимаешь ли,  "фиолетово", что там "использует" твоя фунцкия какой-то там "засылки" в какой-то там "лпт")

У тебя отсутствуют базовые знания - какой тут, нахрен, "лпт" может быть ?)...


 
Хаванагил   (2007-03-23 17:18) [30]

по моему так красивее =)

function BinToInt(bin: string): integer;
var
 i, p: integer;
begin
 p := 1;
 for i := Length(bin) downto 1 do
 begin
   if bin[i] = "1" then Inc(Result, p);
   p := p shl 1;
 end;
end;


 
maxXP ©   (2007-03-23 17:28) [31]


> Alexdeil  
,

> Хаванагил  

Большое спасибо. Все как надо.


> Сергей М
,
> Плохиш
- Удачи вам и ОБЯЗАТЕЛЬНО познакомтесь с ФАНАТОМ и пхпклуба!


 
Johnmen ©   (2007-03-23 19:39) [32]


> - Удачи вам и ОБЯЗАТЕЛЬНО познакомтесь с ФАНАТОМ и пхпклуба!

Ты и там зажигаешь?


 
maxXP ©   (2007-03-26 12:42) [33]

И завершаем  наш занимательный диспут
данным юнитом. Надеюсь кому-нибудь понадобится/
Взято отсюда http://articles.org.ru/cfaq/index.php?qid=2133&catid=34

\\Перевод между системами счисления

   unit convunit;

   interface

   function dec2bin(dec: longint): string;
   function bin2dec(bin: string): longint;
   function dec2hex(dec: longint): string;
   function hex2dec(hex: string): longint;
   function dec2oct(dec: longint): string;
   function oct2dec(oct: string): longint;
   function bin2hex(bin: string): string;
   function hex2bin(hex: string): string;
   function dec2basen(base: integer; dec: longint): string;
   { this function converts numbers from decimal (base 10 notation) to
   different systems of notation. valid systems are from base 2 notation
   to base 36 notation }
   function basen2dec(base: integer; num: string): longint;
   { this function converts numbers from different systems of notation
   to decimal (base 10 notation). valid systems are from base 2 notation
   to base 36 notation }

  ....


   
function bin2hex(bin: string): string;

function sethex(st: string; var error: boolean): char;

var
ch: char;

begin
if st = "0000" then
ch := "0"
else if st = "0001" then
ch := "1"
else if st = "0010" then
ch := "2"
else if st = "0011" then
ch := "3"
else if st = "0100" then
ch := "4"
else if st = "0101" then
ch := "5"
else if st = "0110" then
ch := "6"
else if st = "0111" then
ch := "7"
else if st = "1000" then
ch := "8"
else if st = "1001" then
ch := "9"
else if st = "1010" then
ch := "a"
else if st = "1011" then
ch := "b"
else if st = "1100" then
ch := "c"
else if st = "1101" then
ch := "d"
else if st = "1110" then
ch := "e"
else if st = "1111" then
ch := "f"
else
error := true;
sethex := ch;
end;

var
hex: string;
i: integer;
temp: string[4];
error: boolean;

begin
error := false;
if bin = "0" then
hex := "0"
else
begin
temp := "";
hex := "";
if length(bin) mod 4 < > 0 then
repeat
bin := "0" + bin;
until length(bin) mod 4 = 0;
for i := 1 to length(bin) do
begin
temp := temp + bin[i];
if length(temp) = 4 then
begin
hex := hex + sethex(temp, error);
temp := "";
end;
end;
end;
if error then
bin2hex := "0"
else
bin2hex := hex;
end;

function hex2bin(hex: string): string;

var
bin: string;
i: integer;
error: boolean;

begin
error := false;
bin := "";
for i := 1 to length(hex) do
case upcase(hex[i]) of
"0": bin := bin + "0000";
"1": bin := bin + "0001";
"2": bin := bin + "0010";
"3": bin := bin + "0011";
"4": bin := bin + "0100";
"5": bin := bin + "0101";
"6": bin := bin + "0110";
"7": bin := bin + "0111";
"8": bin := bin + "1000";
"9": bin := bin + "1001";
"a": bin := bin + "1010";
"a": bin := bin + "1011";
"c": bin := bin + "1100";
"d": bin := bin + "1101";
"e": bin := bin + "1110";
"f": bin := bin + "1111";
else
error := true;
end;
if error then
hex2bin := "0"
else
hex2bin := bin;
end;

...



 
maxXP ©   (2007-03-26 12:45) [34]

И завершаем  наш занимательный диспут
данным юнитом. Надеюсь кому-нибудь понадобится/
Взято отсюда http://articles.org.ru/cfaq/index.php?qid=2133&catid=34

\\Перевод между системами счисления

   unit convunit;

   interface

   function dec2bin(dec: longint): string;
   function bin2dec(bin: string): longint;
   function dec2hex(dec: longint): string;
   function hex2dec(hex: string): longint;
   function dec2oct(dec: longint): string;
   function oct2dec(oct: string): longint;
   function bin2hex(bin: string): string;
   function hex2bin(hex: string): string;
   function dec2basen(base: integer; dec: longint): string;
   { this function converts numbers from decimal (base 10 notation) to
   different systems of notation. valid systems are from base 2 notation
   to base 36 notation }
   function basen2dec(base: integer; num: string): longint;
   { this function converts numbers from different systems of notation
   to decimal (base 10 notation). valid systems are from base 2 notation
   to base 36 notation }

  ....


   
function bin2hex(bin: string): string;

function sethex(st: string; var error: boolean): char;

var
ch: char;

begin
if st = "0000" then
ch := "0"
else if st = "0001" then
ch := "1"
else if st = "0010" then
ch := "2"
else if st = "0011" then
ch := "3"
else if st = "0100" then
ch := "4"
else if st = "0101" then
ch := "5"
else if st = "0110" then
ch := "6"
else if st = "0111" then
ch := "7"
else if st = "1000" then
ch := "8"
else if st = "1001" then
ch := "9"
else if st = "1010" then
ch := "a"
else if st = "1011" then
ch := "b"
else if st = "1100" then
ch := "c"
else if st = "1101" then
ch := "d"
else if st = "1110" then
ch := "e"
else if st = "1111" then
ch := "f"
else
error := true;
sethex := ch;
end;

var
hex: string;
i: integer;
temp: string[4];
error: boolean;

begin
error := false;
if bin = "0" then
hex := "0"
else
begin
temp := "";
hex := "";
if length(bin) mod 4 < > 0 then
repeat
bin := "0" + bin;
until length(bin) mod 4 = 0;
for i := 1 to length(bin) do
begin
temp := temp + bin[i];
if length(temp) = 4 then
begin
hex := hex + sethex(temp, error);
temp := "";
end;
end;
end;
if error then
bin2hex := "0"
else
bin2hex := hex;
end;

function hex2bin(hex: string): string;

var
bin: string;
i: integer;
error: boolean;

begin
error := false;
bin := "";
for i := 1 to length(hex) do
case upcase(hex[i]) of
"0": bin := bin + "0000";
"1": bin := bin + "0001";
"2": bin := bin + "0010";
"3": bin := bin + "0011";
"4": bin := bin + "0100";
"5": bin := bin + "0101";
"6": bin := bin + "0110";
"7": bin := bin + "0111";
"8": bin := bin + "1000";
"9": bin := bin + "1001";
"a": bin := bin + "1010";
"a": bin := bin + "1011";
"c": bin := bin + "1100";
"d": bin := bin + "1101";
"e": bin := bin + "1110";
"f": bin := bin + "1111";
else
error := true;
end;
if error then
hex2bin := "0"
else
hex2bin := bin;
end;

...




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

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

Наверх




Память: 0.57 MB
Время: 0.048 c
15-1173695495
infom
2007-03-12 13:31
2007.04.15
Вот такие у нас программисты !


15-1174296854
Jolik
2007-03-19 12:34
2007.04.15
Delphi for PHP


5-1151065835
Артёмич
2006-06-23 16:30
2007.04.15
TreeView передвежение главных item ов вверх, вниз


1-1171881177
Руссо Партизано
2007-02-19 13:32
2007.04.15
Импорт из Wordа


3-1168938121
SLP
2007-01-16 12:02
2007.04.15
долго работает хранимая процедура