C# 十進制 字符串數字和byte數組間的轉換

前排聲明,新手,着急用,所以摸着石頭過河。感覺有好的辦法沒找到,不定期可能還會更新。

所有方案整合於互聯網 如有雷同 都是我抄

  • 方案一
    字符/字符串本身沒有涉及進制轉換,也就是沒有溢出,那麼直接調用byte.Parse(“字符數字”)即可,如果大於255 會報錯,也請別這麼幹。
string a = "10 67 65 83 67 65 68 69 32 84 111 112 333 111 103 121 32 86 49 44 32 40 99 41 32 77 97 116 114 97 45 68 97 116 97 118 105 115 105 111 110";//務必255 以內 空格間隔 
byte[] intBuff = a.Select(x => byte.Parse(x)).ToArray();
string[] a = { "55", "88", "255" };
byte m = byte.Parse(a[1]);
  • 下面是另個方案
    這樣出來的intBuff是個4byte數組,不確定是否正常,感覺有點怪怪的,他這麼轉我大概能理解,可能是轉換中間用了這麼多的空位,如果要求不高可以用
			string a = "352";
            byte[] intBuff = BitConverter.GetBytes(i);
  • 後排討論一個錯誤方案
    這樣出來的intBuff會變成三個字節的數組,大概是50幾,結果忘了記錄了,反正就是對應的ascii值,也就是說用這個函數轉出來的是ascii對應的碼值,按照玩單片機的搞法,其實也夠了,三個數減去中間值,自己寫個轉換函數,一位一位的對應(減去ascii和實際數的差值)上乘以位權,比如5×100 +1×10+2,再除以256,溢出的賦值給高位,餘數給低位,當然,這玩意是高級語言而且有豐富的庫,所以我們最好還是不要自己實現????
			string a = "352";
            byte[] intBuff = Encoding.UTF8.GetBytes(a);

說實話我覺得自己實現比較快。姑且,有這種轉換函數吧,我玩labview是有直接轉換的控件的,不知道爲什麼這個有點難找,不過也是我手頭沒有書,也沒怎麼學過只能網上找。
此外…十六進制的現成的轉換方法有嗎…

ok 16進制的單個字節轉換,代碼如下

			string[] a = new[] { "0D" };
            int i = int.Parse(a[0],System.Globalization.NumberStyles.HexNumber);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章