Форум: "Начинающим";
Текущий архив: 2007.04.15;
Скачать: [xml.tar.bz2];
ВнизПеревод из двоичной в 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;
Скачать: [xml.tar.bz2];
Память: 0.56 MB
Время: 0.04 c