BitConverter a BigEndian   otázka

C#

Konstruktor třídy BitConverter definuje

public static readonly bool IsLittleEndian = true;

a pak všechny metody, které to využívají počítají s LittleEndian řazením bytů.

Já mám ale data s řazením BigEndian (data načtená z PLC Siemens) a rád bych využil tuto třídu, protože v ní jsou všechny přepočty, co potřebuju. Jediný problém mám v tom, jak nastavit IsLittleEndian na FALSE. V té třídě to nejspíš kvůli tomu "readonly" nepůjde, ale nešlo by to nějak podědit a udělat to v novém konstruktoru (to ale nevím jak)? Chci se vyhnout přepisováním všech metod do vlastní třídy.

Díky

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Stačí si přečíst MSDN, resp komentář k BitConverteru:

As it seems that BitConverter can't be set to work for working with big-endian devices (as is common in embedded systems), I wrote my own simple class to make it.

http://snipplr.com/view/15179/adapt-syst...

The System.BitConverter class allows you to convert between bytes (in an array) and numerical types (int, uint, etc). However, it doesn't seem to let you set the endianness (which byte is most significant, e.g. in an int/Int32, there are four bytes, so which way do you read them?). It seems to operate such that the methods always return values appropriate to little endian (host order) systems (most significant byte is on the right). Since, in embedded systems, it is often necessary to interact with big-endian systems, I created this class to provide the functionality for either endianness. You simply set the endianness in the class, then all methods will return endian-aware values.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback