Implementación del código
Solución integral de relleno de cadenas binarias
Funciones de relleno principales
def pad_binary_left(binary_str: str, length: int = 8) -> str:
"""
Left pad binary string with zeros
Args:
binary_str: Input binary string
length: Desired total length
Returns:
Padded binary string
"""
return binary_str.zfill(length)
def pad_binary_right(binary_str: str, length: int = 8) -> str:
"""
Right pad binary string with zeros
Args:
binary_str: Input binary string
length: Desired total length
Returns:
Padded binary string
"""
return binary_str.ljust(length, '0')
Técnicas avanzadas de relleno
Clase de relleno flexible
class BinaryPadder:
@staticmethod
def pad(binary_str: str, length: int = 8,
direction: str = 'left') -> str:
"""
Flexible binary string padding
Args:
binary_str: Input binary string
length: Desired total length
direction: Padding direction
Returns:
Padded binary string
"""
if direction == 'left':
return binary_str.zfill(length)
elif direction == 'right':
return binary_str.ljust(length, '0')
else:
raise ValueError("Invalid padding direction")
Flujo de trabajo de la estrategia de relleno
graph TD
A[Input Binary String] --> B{Padding Required?}
B -->|Yes| C[Determine Padding Strategy]
C --> D[Select Padding Direction]
D --> E[Apply Padding]
E --> F[Return Padded String]
B -->|No| G[Return Original String]
Manejo de errores y validación
def validate_binary_string(binary_str: str) -> bool:
"""
Validate binary string composition
Args:
binary_str: Input string to validate
Returns:
Boolean indicating valid binary string
"""
return all(char in '01' for char in binary_str)
def safe_pad_binary(binary_str: str, length: int = 8) -> str:
"""
Safe binary string padding with validation
Args:
binary_str: Input binary string
length: Desired total length
Returns:
Padded binary string or raises exception
"""
if not validate_binary_string(binary_str):
raise ValueError("Invalid binary string")
return pad_binary_left(binary_str, length)
Comparación de rendimiento del relleno
Método |
Complejidad temporal |
Sobrecarga de memoria |
zfill() |
O(n) |
Baja |
ljust() |
O(n) |
Baja |
Clase personalizada |
O(n) |
Moderada |
Ejemplo de implementación en el mundo real
def process_network_packet(packet_data: str) -> str:
"""
Simulate network packet processing with padding
Args:
packet_data: Raw binary packet data
Returns:
Standardized packet with consistent length
"""
try:
padded_packet = BinaryPadder.pad(
packet_data,
length=32,
direction='left'
)
return padded_packet
except ValueError as e:
print(f"Packet processing error: {e}")
return None
## Example usage in LabEx environment
sample_packet = '10101'
processed_packet = process_network_packet(sample_packet)
print(processed_packet) ## Output: 000000000000000000000010101
Mejores prácticas
- Siempre valide la entrada antes de realizar el relleno
- Elija la estrategia de relleno adecuada
- Tenga en cuenta las implicaciones de rendimiento
- Utilice sugerencias de tipo y cadenas de documentación
- Maneje las excepciones adecuadamente