none
從byte array 轉成10進位 RRS feed

  • 問題

  • 若我從socket 取得 bytearray

    ex :

        byte[] bByte = { 0x00, 0x0e };

        我要如何讓這兩個bytes轉成 14

        若是

         byte[] bByte = { 0x01, 0x2c };

         轉出成 300

        

        麻煩大家了....  thx

        

    2013年6月10日 上午 09:43

解答

  •  //先轉化成數組
                string ms = BitConverter.ToString(new byte[] { 0x010x2c });
               //移除全部的“-”:
                ms = ms.Replace("-","").Trim();
               //最後轉化成標準十進制
                Console.WriteLine(Convert.ToInt32(ms,16));

    If you think one reply solves your problem, please mark it as An Answer, if you think someone's reply helps you, please mark it as a Proposed Answer

    Help by clicking:
    Click here to donate your rice to the poor
    Click to Donate
    Click to feed Dogs & Cats


    Found any spamming-senders? Please report at: Spam Report

    • 已標示為解答 布利 2013年6月10日 下午 01:58
    2013年6月10日 上午 10:35
  • BitConverter.GetBytes(整数)。

    转化结果是4个双字节的整数:

                byte[] bytes = BitConverter.GetBytes(300);
                Array.Reverse(bytes);
                //测试输出
                foreach (var item in bytes)
                {
                    Console.Write(item+"\t");
                }

    结果为0 0 1 44

    表示0x00,0x00,0x01,0x2C(十进制:0,0,1,44)


    If you think one reply solves your problem, please mark it as An Answer, if you think someone's reply helps you, please mark it as a Proposed Answer

    Help by clicking:
    Click here to donate your rice to the poor
    Click to Donate
    Click to feed Dogs & Cats


    Found any spamming-senders? Please report at: Spam Report

    • 已標示為解答 布利 2013年6月10日 下午 01:58
    2013年6月10日 下午 12:15

所有回覆

  • 你计算方法是啥?第二个数组怎么得到300的?


    If you think one reply solves your problem, please mark it as An Answer, if you think someone's reply helps you, please mark it as a Proposed Answer

    Help by clicking:
    Click here to donate your rice to the poor
    Click to Donate
    Click to feed Dogs & Cats


    Found any spamming-senders? Please report at: Spam Report

    2013年6月10日 上午 10:13
  • 你计算方法是啥?第二个数组怎么得到300的?


    If you think one reply solves your problem, please mark it as An Answer, if you think someone's reply helps you, please mark it as a Proposed Answer

    Help by clicking:
    Click here to donate your rice to the poor
    Click to Donate
    Click to feed Dogs & Cats


    Found any spamming-senders? Please report at: Spam Report

     0x01  0x2C

     就是表示 0x012C

     所以是300

     其實就是因為兩個bytes 我不知怎麼做才好

    2013年6月10日 上午 10:20
  • 樓主你好:

    有個轉法,不過我覺得你應該不是要這個答案。

    byte[] bByte = { 0x01, 0x2c };
    int Number1 = bByte[0] * 16 * 16;
    int Number2 = bByte[1];
    int Answer = Number1 + Number2;
    
    Console.WriteLine(Answer);

    有沒有固定長度其實不是問題,用個回圈下去跑就好,

    不過我覺得這樣寫法好爛,看有沒有更高深的前輩回答你的問題。

    2013年6月10日 上午 10:24
  •  //先轉化成數組
                string ms = BitConverter.ToString(new byte[] { 0x010x2c });
               //移除全部的“-”:
                ms = ms.Replace("-","").Trim();
               //最後轉化成標準十進制
                Console.WriteLine(Convert.ToInt32(ms,16));

    If you think one reply solves your problem, please mark it as An Answer, if you think someone's reply helps you, please mark it as a Proposed Answer

    Help by clicking:
    Click here to donate your rice to the poor
    Click to Donate
    Click to feed Dogs & Cats


    Found any spamming-senders? Please report at: Spam Report

    • 已標示為解答 布利 2013年6月10日 下午 01:58
    2013年6月10日 上午 10:35
  •  //先轉化成數組
                string ms = BitConverter.ToString(new byte[] { 0x010x2c });
               //移除全部的“-”:
                ms = ms.Replace("-","").Trim();
               //最後轉化成標準十進制
                Console.WriteLine(Convert.ToInt32(ms,16));

    If you think one reply solves your problem, please mark it as An Answer, if you think someone's reply helps you, please mark it as a Proposed Answer

    Help by clicking:
    Click here to donate your rice to the poor
    Click to Donate
    Click to feed Dogs & Cats


    Found any spamming-senders? Please report at: Spam Report

        啊  我又想到  怎麼把十進位  14 轉成  0x00 0x0e 的byte array

                                               300轉成  0x01  0x2C 的byte array

        請再幫幫忙囉~~~   thx

    2013年6月10日 上午 11:53
  • BitConverter.GetBytes(整数)。

    转化结果是4个双字节的整数:

                byte[] bytes = BitConverter.GetBytes(300);
                Array.Reverse(bytes);
                //测试输出
                foreach (var item in bytes)
                {
                    Console.Write(item+"\t");
                }

    结果为0 0 1 44

    表示0x00,0x00,0x01,0x2C(十进制:0,0,1,44)


    If you think one reply solves your problem, please mark it as An Answer, if you think someone's reply helps you, please mark it as a Proposed Answer

    Help by clicking:
    Click here to donate your rice to the poor
    Click to Donate
    Click to feed Dogs & Cats


    Found any spamming-senders? Please report at: Spam Report

    • 已標示為解答 布利 2013年6月10日 下午 01:58
    2013年6月10日 下午 12:15
  • 前一篇已經跟你說過,16進位是給人看的,不是給電腦看的。

    所以你只要專注在 byte() <-> Int。

    這是計算機概論整數的表示方式。

    Windows 為 little endian ,所以 byte() 要反過來用,變成 0x2c, 0x01 轉成 Int16 ,才會變成 300。

    2013年6月10日 下午 03:11
  • 把以下兩個類別讀清楚, 老是要照抄 Code 不是辦法.

    BitConverter 類別

    Convert 類別


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    2013年6月11日 上午 02:56
    版主