Chybejici operatory ve VB.Net pro .NetMF – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Chybejici operatory ve VB.Net pro .NetMF – .NET – Fórum – Programujte.comChybejici operatory ve VB.Net pro .NetMF – .NET – Fórum – Programujte.com

 

Adrian
~ Anonymní uživatel
12 příspěvků
14. 5. 2016   #1
-
0
-

 Ahoj,

zakladam nove tema, souvisejici s predchazejicim dotazem, ale na jine tema.

zjistil jsem, ze VB.Net pro .Net microframework asi postrada operatory. V cem je problem?

mam kod v c#, ktery funguje jak ma:

public float GetTemperature()
        {
            byte[] readBuffer = new byte[2];
            
            // Get MSB and LSB together
            int temp = readBuffer[0];
            temp <<= 8;
            temp |= readBuffer[1];

            // Negative value test (subzero temperature)
            temp -= (readBuffer[0] >= 0x80) ? 65536 : 0;

            // Get the temperature in Celsius
            return (float)((temp >> 4) * 0.0625);
        }

a pak stejny kod ve VB.net, ktery v desktopove aplikaci funguje, ale v .Net MF uz nejde kompilovat prave kvuli operatorum "<<=" a ">>"

Public Function CorretedTemp(readBuffer As Byte()) As Single
        ' Get MSB and LSB together
        Dim temp As Integer = readBuffer(0)
        temp <<= 8
        temp = (temp Or readBuffer(1))

        ' Negative value test (subzero temperature)
        temp -= If((readBuffer(0) >= &H80), 65536, 0)

        ' Get the temperature in Celsius
        Return CSng((temp >> 4) * 0.0625)
    End Function

Muj dotaz tedy zni, jestli je to chyba .Net MF, nebo delam chybu nekde ja? Pripadne, jestli jde dane operatory nejak nahradit.

Dekuji Adrian

Nahlásit jako SPAM
IP: 82.144.139.–
NeregistrovanyHookyns
~ Anonymní uživatel
62 příspěvků
14. 5. 2016   #2
-
0
-

Tak hluboce jsem se VB nezabýval, ale údajně podle google je Micro vážně neobsahuje, až na verzi 4.2, kde to někomu údajně někomu fungovalo.

Každopádně to můžeš obejít matematicky.

temp <<= 8;

Přepíšeš na 

temp = temp * 256 ' 256 = 2 ^ 8 - 8 počet bitů o kolik chceš posunout

Return CSng((temp >> 4) * 0.0625)

Na 

Return CSng((temp / 16) * 0.0625) ' 16 = 2 ^ 4 - 4 počet bitů posunu
Nahlásit jako SPAM
IP: 77.95.192.–
Adrian
~ Anonymní uživatel
12 příspěvků
14. 5. 2016   #3
-
0
-

#2 NeregistrovanyHookyns
dekuji moc za rychlou odpoved,

mezitim jsem nasel a odskousel nasledujici reseni:

    <System.Runtime.CompilerServices.Extension>
    Public Function RightShift(integerToShift As Integer, bitsToShift As Integer) As Integer
        Return CInt(integerToShift / 2 ^ bitsToShift)
    End Function

    <System.Runtime.CompilerServices.Extension>
    Public Function LeftShift(integerToShift As Integer, bitsToShift As Integer) As Integer
        Return CInt(integerToShift * 2 ^ bitsToShift)
    End Function

co Ty na to (ptam se pro jistotu, nejsem si uplne jisty)?

Adrian

Nahlásit jako SPAM
IP: 82.144.139.–
NeregistrovanyHookyns
~ Anonymní uživatel
62 příspěvků
14. 5. 2016   #4
-
0
-

Implementace těch metod je totožná s tím, co jsem ti poslal. Výsledek výpočtu je však navíc obalený funkcí CInt()

Nahlásit jako SPAM
IP: 77.95.192.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 16 hostů

Podobná vlákna

Komponenty pro .NET — založil durmitor

Kniha pro učení .NET 4 — založil petr56

Automatická dokumentace pro vb.net — založil Jiří Sedláček

Bitové operátory — založil Dotem

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý