1. 程式人生 > >字串與byte[]之間的轉換

字串與byte[]之間的轉換

同一個字元在不同的編碼下會被編成不同長度的編碼,

比如:ACSII,每個字元對應一個位元組,實際上只使用了7位,從00h-7Fh。只能表達128個字元。

GB2312,中文的一種編碼,每個字元使用兩個位元組表示。

UTF-8, 可以表達所有unicode字元,每個字元可以用1-3個位元組表示。

UTF-16, 可以表達所有unicode字元,每個字元可以用1-2個16位整數表示。

UTF-32, 可以表達所有unicode字元,每個字元可以用1個32位整數表示。

(一)用ASCII碼轉換

  1. using   System.Text;     
  2.   byte[]   b=Encoding.ASCII.GetBytes(
    "yourstring");     
  3.  //  得到:121,111,117,114,115,116,114,105,110,103  
  4.   /反向為:     
  5.   byte[]   b=newbyte[]{121,111,117,114,115,116,114,105,110,103};     
  6.   string   str=Encoding.ASCII.GetString(b);     
  7.   //得到:str="yourstring"   

(2) System.Text.Encoding.Default
  1. System.Text.Encoding.Default.GetString(byte
    [])//位元組陣列轉換成字串   
  2.   System.Text.Encoding.Default.GetBytes(string)//字元轉換成位元組陣列   
  3.   //或byte[]=Convert.ToByte(string)
  

(3)需要把string轉換為byte[]使用的場景

任何需要把string序列化處理都需要這種轉換,比如:

需要把string儲存到檔案中,必須把string轉換成一個有序的位元組流,以便系統在硬碟上做物理儲存。

對string做加密操作時,加密演算法是針對位元組進行處理,這時也需要把string轉換成位元組流以便加密演算法對資料進行處理。

String到位元組流的轉換涉及到使用何種編碼,使用不同的編碼得到的位元組碼不同,再從位元組碼做反操作恢復成string,必須使用編碼時使用的編碼或者相容的編碼,否則結果就是亂碼。

///////////////////////////////////////////////////////////////////////////////////

 string轉換為byte []的操作

1、 確定使用的編碼

       使用Encoding類的靜態方法GetEncoding方法獲得某個型別的Encoding物件。

        public static Encoding.GetEncoding(int codepage)

       codepage指定這種返回內碼表的Encoding

       public static Encoding GetEncoding (string name)

       name 指定這種返回程式碼名的Encoding

      其中使用到的內碼表和程式碼名在上面表中。

       比如要獲得一個utf-8的Encoding物件

       Encoding myEncoding = Encoding.GetEncoding("utf-8");

2、 從string到byte[]

     string sData = “字串”;

     byte[] myByte = myEncoding.GetBytes(sData);
    <!--[if !supportLineBreakNewLine]-->
    <!--[endif]-->

    使用GetBytes方法時,不產生前面所說的識別不同UTF格式的前導符。

3、 從byte[]到string

    byte[] myByte = new byte[]{};

    string sData = myEncoding.GetString(byte[] myByte);

相關推薦

Java 字串byte之間的相互轉換

寫在前面 你是否跟我一樣,在一些需要加密的程式碼裡看見需要把字串轉換為位元組的場景,例如MD5加密。而你每次看到像我以前一樣,自動地略過(反正別人都寫好了,我用就是了)。如果是的話,不要再逃避了,下面跟我一起來了解一下字串與byte之間轉換的原理 正文

字串byte[]之間轉換

同一個字元在不同的編碼下會被編成不同長度的編碼, 比如:ACSII,每個字元對應一個位元組,實際上只使用了7位,從00h-7Fh。只能表達128個字元。 GB2312,中文的一種編碼,每個字元使用兩個位元組表示。 UTF-8, 可以表達所有unicode字元,每個字

16進位制字串byte互相轉換

直接貼程式碼 /** * 16進位制字串轉換為byte[] * * @param hexString * @return */ public static byte[] hex

編碼和解碼(字符串byte[]之間轉換)

sys 美國 程序 是我 col urn 密碼 url 簡單的 資源來自互聯網http://www.cnblogs.com/dabaopku/archive/2012/02/27/2370446.html 非常蛋疼的事情, google 和 baidu 在編碼是分別采用

C#實現Streambyte[]之間轉換實例教程

inpu more family get this splay 登錄 line mem 本文以實例形式詳細介紹了C#實現Stream與byte[]之間的轉換的方法,分享給大家供大家參考之用。具體方法如下: 一、二進制轉換成圖片 MemoryStream ms = new

字串陣列之間的互相轉換

將物件或者陣列或者物件陣列轉換成字串------JSON.stringify let obj= {name:'ming',age:18} console.log(JSON.stringify(obj)); let obj= [{name:'ming'

字串整數之間轉換

最近經常用到字串與整數之間的轉換,整理了一下,包含 1、檢驗是否為整數 2、字串轉為整數 3、從字串中提取數字 直接上程式碼: /** * 檢查是否為INT型別,已經對空進行處理 */ public static boolean isInt(

字串數字之間轉換

//將string轉換為double #include <iostream> #include <cstring> using namespace std; int main() { //將string轉換為double,可以利用cstr 還有

C/C++中字串數字之間轉換

#include "iostream" #include "string" #include "sstream" #include "cstdio" using namespace std; string num2str(double a) {    stringstream ss;ss << a

java中intbyte,以及longbyte之間轉換

轉載請註明出處! 做專案時候根據協議在傳送網路流的時候需要將所有int及long轉換成byte,因此寫了以下的轉換方法,希望能幫助到需要的朋友 ^_^ 閒話少說,直接上碼。 public cla

基於Jackson的JsonUtil實現字串物件之間轉換

比較好用的工具類,要匯入Jackson-mapper-asl依賴。詳細看程式碼,其中DateTimeUtil是另外的工具類。 import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.

【整理】C/C++中字串整數之間的相互轉換

最近刷題過程中總是碰到這個知識點,因此做個總結記錄一下。 一、用C標準IO庫中的sprintf()和sscanf()轉換  sprintf()函式原型: #include <stdio.h> int sprintf(char *str,const char

c語言字串整數之間轉換

在c語言中,我們經常面臨需要將字串轉換為整型,以及將整型轉化為字串的問題。將字串轉換為整數的函式在stdlib.h中定義:int atoi(const char *str);atoi函式會跳過str中前面出現的空格,從第一個數字開始轉換。下面是我的實現:int my_atoi

java中字串陣列之間轉換

做題目時候遇到了這個問題,如何將字串轉換成陣列,翻閱資料得到了答案。 (1)字元轉轉陣列 字串不是陣列,但是字串可以轉換成陣列,反之亦然。為了將字串轉換成一個字元陣列,可以使用String類的toCh

字串圖片之間轉換

//圖片轉字串     -(NSString *)UIImageToBase64Str:(UIImage *) image     {         NSData *data = UIImageJPEGRepresentation(image, 1.0f);  

java 字串 unicode 之間互相轉換

/*** unicode 轉字串*/public static String unicode2String(String unicode) {    StringBuffer string = new StringBuffer();    String[] hex = un

MFC 中將字串 數值之間轉換 _tstof _wtoi

將字串轉換為雙精度注:Unicode下可使用_wtof。不過最好使用_tstof,它實際上是巨集,在不同的字符集下解釋不同。這樣兩種字符集都可以編譯通過。CString str(_T("4.567"))

轉:Java中Stringbyte[]的轉換

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

markdownhtml之間轉換引發的問題

引入 結果 com markdown 渲染 深入 baidu 一個 scrip https://www.hackersb.cn/hacker/235.html 看了這位師傅的文章有感而發 前言 對於支持markdown語法的網站,一般都是在後端將markdown語法渲染

C語言字串數字相互轉換

在C/C++語言中沒有專門的字串變數,通常用字元陣列來存放字串。字串是以“\0”作為結束符。C/C++提供了豐富的字串處理函式,下面列出了幾個最常用的函式。   ● 字串輸出函式puts。   ● 字串輸出函式gets。   ●