字串與byte[]之間的轉換
同一個字元在不同的編碼下會被編成不同長度的編碼,
比如:ACSII,每個字元對應一個位元組,實際上只使用了7位,從00h-7Fh。只能表達128個字元。
GB2312,中文的一種編碼,每個字元使用兩個位元組表示。
UTF-8, 可以表達所有unicode字元,每個字元可以用1-3個位元組表示。
UTF-16, 可以表達所有unicode字元,每個字元可以用1-2個16位整數表示。
UTF-32, 可以表達所有unicode字元,每個字元可以用1個32位整數表示。
(一)用ASCII碼轉換
- using System.Text;
-
byte[] b=Encoding.ASCII.GetBytes(
- // 得到:121,111,117,114,115,116,114,105,110,103
- /反向為:
- byte[] b=newbyte[]{121,111,117,114,115,116,114,105,110,103};
- string str=Encoding.ASCII.GetString(b);
- //得到:str="yourstring"
(2) System.Text.Encoding.Default
-
System.Text.Encoding.Default.GetString(byte
- System.Text.Encoding.Default.GetBytes(string)//字元轉換成位元組陣列
- //或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#實現Stream與byte[]之間的轉換實例教程
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中int與byte,以及long與byte之間的轉換
轉載請註明出處! 做專案時候根據協議在傳送網路流的時候需要將所有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中String與byte[]的轉換
輸出字符串 單個字符 linu 編輯 繁體 中國人 對象 本質 計算機基礎知識 String s = "fs123fdsa";//String變量 byte b[] = s.getBytes();//String轉換為byte[] String t = new Stri
markdown與html之間轉換引發的問題
引入 結果 com markdown 渲染 深入 baidu 一個 scrip https://www.hackersb.cn/hacker/235.html 看了這位師傅的文章有感而發 前言 對於支持markdown語法的網站,一般都是在後端將markdown語法渲染
C語言字串與數字相互轉換
在C/C++語言中沒有專門的字串變數,通常用字元陣列來存放字串。字串是以“\0”作為結束符。C/C++提供了豐富的字串處理函式,下面列出了幾個最常用的函式。 ● 字串輸出函式puts。 ● 字串輸出函式gets。 ●