Konverze formátů při přenosu

Z MiS
(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
m (Přidán zdroj UTF-8 z Wikipedie.)
(Přidán příklad na převod dat.)
Řádka 1: Řádka 1:
 
[[Category:VSE]][[Category:Sítě]][[Category:Informatika]][[Category:Prezentační vrstva]]
 
[[Category:VSE]][[Category:Sítě]][[Category:Informatika]][[Category:Prezentační vrstva]]
  
== Konverze formátů ==
+
== Co je „konverze formátů“? ==
Jedním z úkolů prezentační vrstvy je převádět formát zápisu (způsob kódování) složitějších datových struktur. Může se jednat o čísla delší než 1 byte, ale také o obrázky a další datové struktury.
+
Jedním z úkolů prezentační vrstvy je převádět formát zápisu (způsob kódování) složitějších datových struktur při přenosu mezi dvěma počítači. Může se jednat o čísla delší než 1 byte, ale také o obrázky a další datové struktury.
  
 
Pokud komunikující počítače používají odlišnou reprezentaci těchto dat, je třeba data při přenosu zkonvertovat.
 
Pokud komunikující počítače používají odlišnou reprezentaci těchto dat, je třeba data při přenosu zkonvertovat.
 
* V modelu ISO/OSI to má na starosti prezentační vrstva.
 
* V modelu ISO/OSI to má na starosti prezentační vrstva.
 
* Reálně používaný model TCP/IP prezentační vrstvu nemá, konverzi si musí provést aplikace sama.
 
* Reálně používaný model TCP/IP prezentační vrstvu nemá, konverzi si musí provést aplikace sama.
 +
 +
<div class="Priklad">
 +
; Příklad &ndash; desetinná čísla
 +
Jako příklad uveďme desetinná čísla. Pokud chceme desetinné číslo uložit v&nbsp;počítači, musíme ho převést na posloupnost nul a jedniček. Existují různé způsoby, jak toto provést. Pokud v&nbsp;síti komunikují dva počítače a&nbsp;každý z&nbsp;nich používá jiný způsob, nemohou prostě poslat odpovídající posloupnost bitů přes síť, protože na druhém počítači by stejná posloupnost znamenala jiné číslo. Je třeba provést konverzi.
 +
 +
; Představme si následující situaci
 +
Odesílatel a příjemce ukládají desetinná čísla tak, že číslo <code>0,083</code> převedou na <code>83*10<sup>-3</sup></code>. Číslu <code>83</code> se říká ''mantisa'' a <code>-3</code> je ''exponent''.
 +
 +
Odesilatel i&nbsp;příjemce použijí&nbsp;16 bitů. Dále ale postupují různě:
 +
* Odesilatel:
 +
*# mantisu (číslo <code>83</code>) ukládá na 8&nbsp;bitů: <code>0101 0011</code>
 +
*# posléze využije další byte tak, že 1.&nbsp;bit bude reprezentovat znaménko (0..plus, 1..mínus) a dalších 7 bitů exponent <code>3</code>: <code>1</code> <code>000 0011</code>
 +
*: <code>0,083</code> => číslo <code>83</code>: <code>0101 0011</code> + znaménko: <code>1</code> (mínus) + exponent <code>3</code>: <code>000 0011</code> => <code>0101 0011 1000 0011</code>
 +
* Příjemce reprezentuje desetinná čísla jinak. Číslo <code>0,083</code> uloží tak, že:
 +
*# nejprve uvede znaménko exponentu (1 bit): <code>1</code> (mínus)
 +
*# poté exponent na 3 bity (to obvykle stačí): <code>011</code>
 +
*# a posléze využije 12 bitů na zápis mantisy (číselné části).
 +
*: <code>0,083</code> => znaménko: <code>1</code> (mínus) + exponent <code>3</code>: <code>011</code> + číslo <code>83</code>: <code>0000 0101 0011</code> => <code>1011 0000 0101 0011</code>)
 +
 +
Pokud by odesilatel prostě vzal 16 bitů, které reprezentují číslo a poslal je příjemci, ten by místo čísla <code>0,083</code> přečetl:
 +
*: <code>0101 0011 1000 0011</code> => znaménko: <code>0</code> (plus) + exponent <code>5</code>: <code>101</code> + číslo <code>899</code>: <code>0011 1000 0011</code> => <code>899*10<sup>5</sup></code> => <code>89&nbsp;900&nbsp;000</code>
 +
 +
Aby se nedorozumění předešlo, musí buď odesilatel nebo příjemce data převést do formátu, který používá příjemce. To označujeme jako provedení konverze.
 +
</div>
  
  

Verze z 16. 3. 2020, 10:15


Obsah

Co je „konverze formátů“?

Jedním z úkolů prezentační vrstvy je převádět formát zápisu (způsob kódování) složitějších datových struktur při přenosu mezi dvěma počítači. Může se jednat o čísla delší než 1 byte, ale také o obrázky a další datové struktury.

Pokud komunikující počítače používají odlišnou reprezentaci těchto dat, je třeba data při přenosu zkonvertovat.

Příklad – desetinná čísla

Jako příklad uveďme desetinná čísla. Pokud chceme desetinné číslo uložit v počítači, musíme ho převést na posloupnost nul a jedniček. Existují různé způsoby, jak toto provést. Pokud v síti komunikují dva počítače a každý z nich používá jiný způsob, nemohou prostě poslat odpovídající posloupnost bitů přes síť, protože na druhém počítači by stejná posloupnost znamenala jiné číslo. Je třeba provést konverzi.

Představme si následující situaci

Odesílatel a příjemce ukládají desetinná čísla tak, že číslo 0,083 převedou na 83*10-3. Číslu 83 se říká mantisa a -3 je exponent.

Odesilatel i příjemce použijí 16 bitů. Dále ale postupují různě:

  • Odesilatel:
    1. mantisu (číslo 83) ukládá na 8 bitů: 0101 0011
    2. posléze využije další byte tak, že 1. bit bude reprezentovat znaménko (0..plus, 1..mínus) a dalších 7 bitů exponent 3: 1 000 0011
    0,083 => číslo 83: 0101 0011 + znaménko: 1 (mínus) + exponent 3: 000 0011 => 0101 0011 1000 0011
  • Příjemce reprezentuje desetinná čísla jinak. Číslo 0,083 uloží tak, že:
    1. nejprve uvede znaménko exponentu (1 bit): 1 (mínus)
    2. poté exponent na 3 bity (to obvykle stačí): 011
    3. a posléze využije 12 bitů na zápis mantisy (číselné části).
    0,083 => znaménko: 1 (mínus) + exponent 3: 011 + číslo 83: 0000 0101 0011 => 1011 0000 0101 0011)

Pokud by odesilatel prostě vzal 16 bitů, které reprezentují číslo a poslal je příjemci, ten by místo čísla 0,083 přečetl:

  • 0101 0011 1000 0011 => znaménko: 0 (plus) + exponent 5: 101 + číslo 899: 0011 1000 0011 => 899*105 => 89 900 000

Aby se nedorozumění předešlo, musí buď odesilatel nebo příjemce data převést do formátu, který používá příjemce. To označujeme jako provedení konverze.


Kódování textů

ASCII a další

ASCII a kódové stránky

Pokud komunikují počítače, které používají odlišné způsoby kódování znaků, je třeba je převádět (konvertovat).

Typickým příkladem takové konverze je převod mezi kódovými stránkami ASCII v prohlížečích.

Little × Big Endian

Obrázky

ASN.1

Zdroje

Osobní nástroje
Jmenné prostory
Varianty
Akce
Výuka
Navigace
Nástroje