none
如何把C#的十六進制DataType轉換至VB.NET的格式? RRS feed

  • 問題

  • 我嘗試使用網上的C# to VB.NET Convertor轉換代碼,但當遇到十六進制的DataType時,
    就會發生錯誤,所以我需要人手轉換,但苦無下手方法.例如
    //
    for ( int i=1, pos=0; i<length; i+=4 ) {
                    System.Byte b = (byte)((input[i+1]-0x20) & 0x3f);
                    System.Byte c = (byte)((input[i+2]-0x20) & 0x3f);
                    stream.WriteByte((byte)(((inputIdea-0x20) & 0x3f)<<2|b>>4));
                    pos++;
                    if ( pos<length_output ) {
                        stream.WriteByte((byte)(b<<4|c>>2));
                        pos++;
                    }
                    if ( pos<length_output ) {
                        stream.WriteByte((byte)(c<<6|((input[i+3]-0x20) & 0x3f)));
                        pos++;
                    }
                }

    //
    private const int Signature = 0x223e9f78;
    //

    private enum TnefAttribute : ushort {
                Owner                   = 0x0000,
                SentFor                 = 0x0001,
                Delegate                = 0x0002,
                DateStart               = 0x0006,
                DateEnd                 = 0x0007,
    }

    只要用 "0x"的,都不能轉換
    2006年12月6日 上午 03:12

解答

  • 請把你有問題的行號明確標出來,以利快速判讀。此外你並沒有張貼你的 VB 程式碼。

    還有你的 DataType 是指使用者自訂型別還是?這邊看到的是 Byte 在做移位操作而已。

    針對你最後一句,VB 是用 &H

    Owner = &H0
    SentFor = &H1

    2006年12月6日 上午 07:10
    版主

所有回覆

  • 請把你有問題的行號明確標出來,以利快速判讀。此外你並沒有張貼你的 VB 程式碼。

    還有你的 DataType 是指使用者自訂型別還是?這邊看到的是 Byte 在做移位操作而已。

    針對你最後一句,VB 是用 &H

    Owner = &H0
    SentFor = &H1

    2006年12月6日 上午 07:10
    版主
  • 沒用過 Convertor ... 不過依據你的描述,應該是 Convertor 的 Bug
    如果要讓他轉,最簡單但也最費力的方式就是將 16 進位手動改為 10 進位
    就不需要使用 0x 啦 :b

    by Chui-Wen Chiu
    Blog http://chuiwenchiu.spaces.live.com
    2006年12月16日 上午 03:16