1. 程式人生 > >string和byte[]的轉換

string和byte[]的轉換

 string型別轉成byte[]: byte[] byteArray = System.Text.Encoding.Default.GetBytes ( str );

反過來,byte[]轉成string:

string str = System.Text.Encoding.Default.GetString ( byteArray );


其它編碼方式的,如System.Text.UTF8Encoding,System.Text.UnicodeEncoding class等;例如:

string型別轉成ASCII byte[]:("01" 轉成 byte[] = new byte[]{ 0x30, 0x31})

byte[] byteArray = System.Text.Encoding.ASCII.GetBytes ( str );

ASCII byte[] 轉成string:(byte[] = new byte[]{ 0x30, 0x31} 轉成 "01")

string str = System.Text.Encoding.ASCII.GetString ( byteArray );

有時候還有這樣一些需求:

byte[] 轉成原16進位制格式的string,例如0xae00cf, 轉換成 "ae00cf";new byte[]{ 0x30, 0x31}轉成"3031":

      

public static string ToHexString(byte[] bytes) // 0xae00cf => "AE00CF "
        {
            string hexString = string.Empty;
            if (bytes != null)
            {
                StringBuilder strB = new StringBuilder();

                for (int i = 0; i < bytes.Length; i++)
                {
                    strB.Append(bytes[i].ToString("X2"));
                }
                hexString = strB.ToString();
            }
            return hexString;
        }


反過來,16進位制格式的string 轉成byte[],例如, "ae00cf"轉換成0xae00cf,長度縮減一半;"3031" 轉成new byte[]{ 0x30, 0x31}:
      

 public static byte[] GetBytes(string hexString, out int discarded)
        {
            discarded = 0;
            string newString = "";
            char c;
            // remove all none A-F, 0-9, characters
            for (int i = 0; i < hexString.Length; i++)
            {
                c = hexString[i];
                if (IsHexDigit(c))
                    newString += c;
                else
                    discarded++;
            }
            // if odd number of characters, discard last character
            if (newString.Length % 2 != 0)
            {
                discarded++;
                newString = newString.Substring(0, newString.Length - 1);
            }

            int byteLength = newString.Length / 2;
            byte[] bytes = new byte[byteLength];
            string hex;
            int j = 0;
            for (int i = 0; i < bytes.Length; i++)
            {
                hex = new String(new Char[] { newString[j], newString[j + 1] });
                bytes[i] = HexToByte(hex);
                j = j + 2;
            }
            return bytes;
        }

相關推薦

Java String byte[]中間的轉換

轉自 http://blog.csdn.net/llwan/article/details/7567906 做JAVA經常會碰到中文亂碼問題,還有各種編碼的問題,特別是String類的內容需要重新編碼的問題。要解決這些問題,必須瞭解清楚JAVA對於字串是怎麼處理的。 

Java中Stringbyte[]間的轉換淺析

Java語言中字串型別和位元組陣列型別相互之間的轉換經常發生,網上的分析及程式碼也比較多,本文將分析總結常規的byte[]和String間的轉換以及十六進位制String和byte[]間相互轉換的原理及實現。 1. String轉byte[] 首先我們來分析一下常規的Strin

java實現Stringbyte[]的轉換

String s = "easonjim";//String變數 byte b[] = s.getBytes();//String轉換為byte[] String t = new String(b);//bytep[]轉換為String,支援傳遞編碼 1、

stringbyte[]的轉換

 string型別轉成byte[]: byte[] byteArray = System.Text.Encoding.Default.GetBytes ( str ); 反過來,byte[]轉成string: string str = System.Text.Encodin

Char, String Byte 等型別間的轉換編碼

這篇文章的標題看似簡單,那就先從簡單的說起。眾所周知: 1、char 是字元型別; 2、string 是字串型別; 兩者都是及其常用資料型別。雖然一字之差,但是有本質區別: 1、char 在C++中是基礎型別,在C#中是值型別(Value Ty

golang string[]byte的對比

side runt solid git sql raw expec 內存 indent golang string和[]byte的對比為啥string和[]byte類型轉換需要一定的代價?為啥內置函數copy會有一種特殊情況copy(dst []byte, src stri

Golang黑科技之——string與[]byte轉換

我們知道,相對於C語言,golang是型別安全的語言。但是安全的代價就是效能的妥協。 下面我們通過Golang中的“黑科技”來一窺Golang不想讓我們看到的“祕密”——string的底層資料。 通過reflect包,我們可以知道,在Golang底層,string和slice其實都是st

StringInteger轉換的大坑

今天碰到一個大坑,相信很多人也都碰到過,那就是String和Integer的相互轉換 m=Integer.parseInt(num) 到最後判斷的時候我用m=l.getM(); 一直得不到我想要的結果 後來在網上查了很多資料發現,Integer型別的取值範圍在1

java StringDate轉換

  /**    SimpleDateFormat函式語法:           G 年代標誌符         y 年         M 月         d 日         h 時 在上午或下午 (1~12)         H 時 在一

【資料處理】關於stringbyte轉換之間 資料丟失的問題

最近在專案中遇到一個問題:         程式中用到了MD5加密和IDEA加密,通過這些演算法得出的結果均是位元組碼,但是我程式中使用一個通訊介面,其接受的引數型別為String。所以在傳送時,需要轉換為String。        對於java來說,byte只能表示有

go hex string與[]byte轉換

hex string to []byte import "hex" // 省略部分程式碼.... hexStr := "fee9ecaadafeee72d2eb66a0bd344cdd" data, err := hex.DecodeString(hex

C# Path操作路徑檔案、File處理檔案、讀寫檔案:byte[];string[];stringstringbyte[]轉換,File.AppendAllText()

將字串以怎樣的形式儲存在二進位制------編碼 File 和Path 都在名稱空間 using System.IO; 1、 專門操作路徑 Path            string str = @"E:\language\C#\C#learn\first.wav";

StringDate轉換

異常 pre simple exce parse EDA nts tst cep 1.Date轉String Date date = new Date(); SimpleDateFormat sdf = new SimpleDateF

C# 中字符串string字節數組byte[]的轉換

arr nco bytes bytearray 數組 byte[] sys efault ring string轉byte[]: byte[] byteArray = System.Text.Encoding.Default.GetBytes ( str ); byte

C#: 字串string位元組陣列byte[]的轉換

string轉byte[]: byte[] byteArray = System.Text.Encoding.Default.GetBytes ( str ); byte[]轉string: string str = System.Text.Encoding.Default.GetStri

【C# 4】文字轉換。串列埠通訊中字串string位元組陣列byte[]、ASCII的轉換

string轉byte[]:byte[] byteArray = System.Text.Encoding.Default.GetBytes ( str );byte[]轉string:string str = System.Text.Encoding.Default.GetString ( byteArra

C# string型別byte[]型別相互轉換

string型別轉成byte[]:byte[] byteArray = System.Text.Encoding.Default.GetBytes ( str );byte[]轉成string:string str = System.Text.Encoding.Defau

C# byte[]型別String型別相互轉換

String型別轉成byte[]: byte[] byteArray = System.Text.Encoding.UTF8.GetBytes ( strvalue ); byte[]轉成String: String str = System.Text.Encoding.U

轉:Java中Stringbyte[]的轉換

輸出字符串 單個字符 linu 編輯 繁體 中國人 對象 本質 計算機基礎知識 String s = "fs123fdsa";//String變量 byte b[] = s.getBytes();//String轉換為byte[] String t = new Stri

圖片base64編碼字符串 互相轉換,圖片byte數組互相轉換

16進制 cnblogs exc 十六進制 tostring ati color int inpu 圖片和base64編碼字符串 互相轉換 import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; imp