Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-08-2004
emeceuy emeceuy is offline
Miembro
 
Registrado: jun 2003
Ubicación: Uruguay
Posts: 122
Poder: 21
emeceuy Va por buen camino
de BYTE a STRING

Hola...

Tengo un dato guardado en un byte (de 8 bits) que quiero poder pasarlo a tipo cadena o entero, pero entero en base binario (110010001) y NO en base decimal (eso creo que se hace smallint(BYTE_NOM), pero no es lo que quiero). En definitiva quiero tener "visible" que bit está en 0 y que bit está en 1.

Muchas gracias

saludos

mArCe
__________________
Marcelo C.

Última edición por emeceuy fecha: 20-08-2004 a las 05:25:48.
Responder Con Cita
  #2  
Antiguo 20-08-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
¿Algo como esto?

Código Delphi [-]
function BinaryStr(B: Byte): String;
const
  BinChars: array[Boolean] of Char = ('0', '1');

var
  Pot2, I: Integer;

begin
  Pot2 := 1;
  for I := 0 to 7 do
  begin
    Result := BinChars[B and Pot2 <> 0] + Result;
    Pot2 := 2*Pot2;
  end;
end;

// Saludos
Responder Con Cita
  #3  
Antiguo 20-08-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Una versión 'simplificada':

Código Delphi [-]
function BinaryStr(B: Byte): String;
var
  I: Integer;

begin
  for I := 0 to 7 do
  begin
    Result := Chr(Byte(B and 1 <> 0) + Ord('0')) + Result;
    B := B shr 1;
  end;
end;

// Saludos
Responder Con Cita
  #4  
Antiguo 20-08-2004
Mick Mick is offline
Miembro
 
Registrado: may 2003
Posts: 405
Poder: 21
Mick Va por buen camino
Mas opciones:

Código:
function BinaryStr(B: Byte): String;
var
  I: Integer;
begin
  SetLength(Result,8);
  for I := 1 to 8 do begin
    Result[i]:= PChar('01')[(B SHR (8-I)) AND 1];
  end{for};
end;
Pero sin duda esta es la mas rapida de todas las opciones propuestas:

Código:
function BinaryStr(B: Byte): String;
var
  I  : Integer;
  Ptr: PChar;
begin
  SetLength(Result,8);
  Ptr:= PChar(Result);
  for I:= 7 downto 0 do begin
    Ptr^:= PChar('01')[(B SHR I) AND 1];
    Inc(Ptr);
  end{for};
end;:
Saludos
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 08:49:41.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi