2014-07-21 105 views
0

我試圖找到vb.net的函數/運算符,它與c中的以下內容具有相同的功能: uint8_t value1 = 200; int8_t value2 =(int8_t)value1;在vb.net中強制鑄造

- >值2應該有一些負值

因爲有按位或,異或,並且,不,我倒是希望也有一個乾淨的方式做基於二進制,而不是十進制投值。

我會需要這個8位,16位的32位整數和兩個方向。

如果你問自己爲什麼,我正在爲微控制器開發一個自定義通信庫,並且發送的數據是全通無符號字節,並且在屏蔽,奇偶校驗和排列數據後,我最終得到無符號整數值被轉換回原來的類型。

現在我知道,如果輸入值大於127,我可以通過減去一些值來實現這一點......但這只是混亂和緩慢,所以我希望有一個函數只是告訴編譯器做一個直接演員而不檢查它是否有意義。

我真的很感激你的意見。

+0

我不知道在VB.NET中會做什麼,你可能需要通過'BitConverter'類。 – jmcilhinney

回答

0

在VB中,默認檢查溢出(C#不是)。你必須在編譯器設置來禁用它(我認爲這是在高級編譯選項。This answer可以幫助你。

之後,您可以easely剛剛從一個轉換到另一個。

Dim a As UInt16 
    Dim b As Int16 

    a = 65530 
    b = a 

    Console.WriteLine(b) ' Prints -6 
+0

可愛的感謝,我認爲這會讓我的生活變得更加簡單:) – Chris