Caracteres e Sistemas de Codificação
Um caractere representa uma unidade básica de texto, como letras, símbolos ou ideogramas. Em codificação UTF-8, caracteres chineses geralmente ocupam 3 bytes, enquanto no padrão GBK utilizam 2 bytes. A codificação define como cada caractere é convertido em sequências binárias para armazenamento e processamento.
Padrões de Codificação
O ASCII clássico utiliza 7 bits para representar 128 caracteres (0-127), com o bit superior preenchido com zero em sistemas de 8 bits. Por exemplo:
# 'A' corresponde a 65 (01000001 em binário)
# 'a' corresponde a 97 (01100001 em binário)
Extensões como ISO-8859-1 expandem para 256 caracteres (0-255) usando o bit superior. Padrões orientais como GBK suportam caracteres chineses com 1-2 bytes, onde valores acima de 128 indicam sequências multibyte.
A Unicode é um padrão universal que engloba todos os sistemas de escrita. O UTF-8, sua implementação mais comum, usa codificação variável (1-4 bytes) mantendo compatibilidade com ASCII para caracteres latinos. Em Python, strings nativas utilizam internamente Unicode, sendo convertidas para UTF-8 durante persistência ou transmissão.
Sistemas Numéricos na Computação
Entender representações numéricas é essencial para trabalhar com codificação:
- Bit: Unidade mínima (0 ou 1)
- Byte: 8 bits (valores 0-255)
- Hexadecimal: Base 16 (0-9, A-F), onde dois dígitos representam um byte
Exemplo de conversão:
valor_decimal = 255
print(hex(valor_decimal)) # '0xff'
print(bin(valor_decimal)) # '0b11111111'
Manipulação de Strings em Python
Strings em Python são imutáveis. Operações como concatenação geram novos objetos:
texto = "Olá"
saudacao = texto + " mundo!" # Nova string criada
Formatação Moderna
Utilize f-strings para interpolação eficiente:
usuario = "Carlos"
nivel = 42
print(f"Usuário: {usuario}, Nível: {nivel:03d}") # Usuário: Carlos, Nível: 042
Para controle avançado de formatação:
pi = 3.14159
print(f"Pi: {pi:.2f} | Hex: {255:#x}") # Pi: 3.14 | Hex: 0xff
Métodos Essenciais
| Método | Descrição |
|---|---|
strip() |
Remove espaços laterais |
split(delimitador) |
Divide string em lista |
join(lista) |
Concatena elementos com separador |
isnumeric() |
Verifica se contém apenas dígitos |
encode('utf-8') |
Converte para sequência de bytes |
Sequências de Bytes
Para manipulação de dados binários, utilize objetos bytes imutáveis ou bytearray mutáveis:
# Conversão string → bytes
dados_binarios = "Texto UTF-8".encode('utf-8')
# Manipulação direta de bytes
sequencia = bytearray(b'\x48\x65\x6c\x6c\x6f')
sequencia[0] = 0x4A # Modifica primeiro byte
print(sequencia.decode()) # "Jello"
A conversão explícita entre strings e bytes é necessária para operações de I/O, garantindo tratamento correto de codificação.