# Representaçao de Dados

### Tipos Arquivos

Para sabermos qual o tipo de arquivo (independente da sua extensão), podemos utilizar o comando:

```bash
file <file>
```

A maioria dos arquivos digitais tem uma assinatura localizada nos 20 primeiros bytes do arquivo e é através desse cabeçalho que seu tipo será definido, e não pela sua extensão.

###

### Decimal

É o sistema mais amplamente utilizado e é chamado de sistema de base 10 (decimal), pois usa 10 dígitos ou símbolos (`0 ,1, 2, 3, 4, 5, 6, 7, 8, 9`).\
A posição do número indica o valor que ele representa, e cada dígito é múltiplicado pela potência de 10 associada a sua posição. Segue abaixo o exemplo do número 5437:

```bash
5437 = 5000 + 400 + 30 + 7
# Ou mais precisamente
5437 = 5x10³ + 4x10² + 3x10¹ + 7x10º
```

###

### Binário

Sistema numeral de base 2 é representado por `1` e `0`, contendo 8 caracteres. Este segue a mesma regra do número decimal, porém este faz a multiplicação pela potência 2. Cada 1 ou 0 é chamado de `bit` (ou binário) e a soma de 8 bits se chama `byte`. O bit de ordem mais alta se localiza à extrema esquerda e tem maior valor, sendo chamado de `MSB (Most Significant Bit)` ou `Bit Mais Significativo`. Já o bit de valor mais baixo esstá localizaro fica à extrema extrema direita, sendo chamada de `LSB (Least Significat Bit)` ou `Bit Menos Significante`.

**DICA:** Os número binários podem ser escritos com o prefixo `b`, por exemplo: `0b11001`

###

### Hexadecimal

Também conhecido como `Hex`, este possui a base 16, contendo letras e números: `0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F`.\
**OBS.:** As letras maiúsculas são usadas para representar os número de 10 a 15

O Hexademical é mais curto e fácil de ser compreendidos por humanos. Segue abaixo um exemplo de conversão:

```bash
# Lembrando que "A" equivale "10"
19A = (1x16²) + (9x16¹) + (10X16º) = 256 +144 + 10 = 410
```

{% hint style="info" %}
**DICA:** Os números Hex podem ser diferenciados com a inclusão do prefixo **Ox** ou a inserção do subscrito **16** ou do sufixo **H**
{% endhint %}

### Convertendo Valores

Hexadecimal para Decimal

```bash
# Bash
printf "%d\n" 0x40
printf "%d\n" 0xdd84
printf "%d.%d.%d.%d\n" 0xc0 0xa8 0x00 0xc8

# Python
python -c "print 0x88"
```

Hexadecimal para Ascii

```bash
printf "\x47\x45\x54\n"
echo -e "\x47\x45\x54\n"
```

#### Sites

```bash
# Diversos tipos de encode/decode
https://ascii.cl

# Lista de caracteres com URL encode
https://www.w3schools.com/tags/ref_urlencode.ASP

# Encode/Decode em tempo real
https://onlinestringtools.com/
https://gchq.github.io/CyberChef/

# Converte Hexadecimal em Arquivo (binário)
https://tomeko.net/online_tools/hex_to_file.php?lang=en
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://mysther.gitbook.io/knowledge-base/representacao-de-dados.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
