javabytetochar
『壹』 java中char到底是多少位元組
java中的char佔2個位元組
1:「位元組」是byte,「位」是bit ;
2: 1 byte = 8 bit ;
char 在java中是2個位元組。java採用unicode,2個位元組(16位)來表示一個字元。
代碼如下:
publicclassTest{
publicstaticvoidmain(String[]args){
Stringstr="中";
charx='中';
byte[]bytes=null;
byte[]bytes1=null;
try{
bytes=str.getBytes("utf-8");
bytes1=charToByte(x);
}catch(UnsupportedEncodingExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
System.out.println("bytes大小:"+bytes.length);
System.out.println("bytes1大小:"+bytes1.length);
}
publicstaticbyte[]charToByte(charc){
byte[]b=newbyte[2];
b[0]=(byte)((c&0xFF00)>>8);
b[1]=(byte)(c&0xFF);
returnb;
}
}
結果如下:
bytes 大小:3
bytes1大小:2
『貳』 byte怎麼轉換為char
這是計算機中存儲信息的單位。char是字元型byte是位元組型(0-255)在參與算術運算是char類型會自動轉為整型;如字元A會轉為對應ASCII碼65.char是用來表示一個字元,而不是一個字,因為一個字要佔用兩個位元組。
而存儲一個ANSI字元只需一個位元組。注意,強調是ANSI字元,而不是Unicode字元。因為Unicode要佔用兩個位元組。byte類型是最自由的一種。
它就佔用一個位元組,但沒有定義這個位元組拿來干什麼。char定義為一個UnsignedByte類型。也就是無符號的一個位元組。它將一個位元組的8位全佔用了。
表示的數據范圍是0到255之間。你確定處理的字元串是標準的ANSI字元串,那不必轉換也可以直接一個位元組一個位元組地處理。要處理的字元串不定或是統一的Unicode字元串則要進行轉換後進行處理。
(2)javabytetochar擴展閱讀:
位元組(Byte )是計算機信息技術用於計量存儲容量的一種計量單位,作為一個單位來處理的一個二進制數字串,是構成信息的一個小單位。最常用的位元組是八位的位元組,即它包含八位的二進制數。
ASCII碼:一個英文字母(不分大小寫)佔一個位元組的空間。一個二進制數字序列,在計算機中作為一個數字單元,一般為8位二進制數。換算為十進制 ,最小值-128,最大值127。如一個ASCII碼就是一個位元組。
UTF-8編碼:一個英文字元等於一個位元組,一個中文(含繁體)等於三個位元組。中文標點佔三個位元組,英文標點佔一個位元組。
Unicode編碼:一個英文等於兩個位元組,一個中文(含繁體)等於兩個位元組。中文標點占兩個位元組,英文標點占兩個位元組。
任何數據類型的數組都需要 20 個位元組的內存空間,加上每一數組維數占 4 個位元組,再加上數據本身所佔用的空間。數據所佔用的內存空間可以用數據元數目乘上每個元素的大小加以計算。
例如,以 4 個 2位元組之 Integer 數據元所組成的一維數組中的數據,占 8 個位元組。這 8 個位元組加上額外的 24 個位元組,使得這個數組所需總內存空間為 32 個位元組。
參考資料來源:網路-Byte
『叄』 Java中char到底是多少位元組
java中的char佔2個位元組
1:「位元組」是byte,「位」是bit ;
2: 1 byte = 8 bit ;
char 在java中是2個位元組。java採用unicode,2個位元組(16位)來表示一個字元。
代碼如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class Test {
public static void main(String[] args) {
String str= "中";
char x ='中';
byte[] bytes=null;
byte[] bytes1=null;
try {
bytes = str.getBytes("utf-8");
bytes1 = charToByte(x);
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("bytes 大小:"+bytes.length);
System.out.println("bytes1大小:"+bytes1.length);
}
public static byte[] charToByte(char c) {
byte[] b = new byte[2];
b[0] = (byte) ((c & 0xFF00) >> 8);
b[1] = (byte) (c & 0xFF);
return b;
}
}
結果如下:
bytes 大小:3
bytes1大小:2
『肆』 java 中,char 數組轉換成 byte數組(急,在線等)
package com.example.lib;
import java.io.FileInputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.*;
import java.nio.charset.Charset;
public class MyClass {
public static void main(String[] args) throws IOException {
FileInputStream fs; //定義流對象變數
fs = new FileInputStream("/Users/mac/AndroidStudioProjects/MyApplication/lib/src/main/java/com/example/lib/mytext.txt");
byte[] bytes = new byte[fs.available()]; //定義接收數據的位元組數組,並用流對象初始化數組大小
fs.read(bytes); //裝載數據
char[] w = getChars(bytes);//將位元組數組轉化為字元數組,注意數組末尾會有空字元
String s = new String(w); //利用字元串構造函數來構造字元串,
System.out.println("結果為:"+s.trim());輸出時,去掉末尾空格字元
}
private static byte[] getBytes (char[] chars) {
Charset cs = Charset.forName ("UTF-8");//設定字元集編碼代號
CharBuffer cb = CharBuffer.allocate (chars.length);//按照字元數組長度進行分配空間
cb.put (chars); //裝載數據
cb.flip (); //指針復位
//按照編碼規則進行編碼
ByteBuffer bb = cs.encode (cb);
return bb.array();
}
private static char[] getChars (byte[] bytes) {
Charset cs = Charset.forName ("UTF-8");//指定字元集編碼
ByteBuffer bb = ByteBuffer.allocate (bytes.length);
bb.put (bytes);//裝載數據
bb.flip ();//調整回指針為0
CharBuffer cb = cs.decode (bb);//按照指定字元集進行解碼
return cb.array();//返回字元數組
}
}
『伍』 Java中char到底是多少位元組
java中的char佔2個位元組
1:「位元組」是byte,「位」是bit ;
2: 1 byte = 8 bit ;
char 在java中是2個位元組。java採用unicode,2個位元組(16位)來表示一個字元。
代碼如下:
public class Test {
public static void main(String[] args) {
String str= "中";
char x ='中';
byte[] bytes=null;
byte[] bytes1=null;
try {
bytes = str.getBytes("utf-8");
bytes1 = charToByte(x);
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("bytes 大小:"+bytes.length);
System.out.println("bytes1大小:"+bytes1.length);
}
public static byte[] charToByte(char c) {
byte[] b = new byte[2];
b[0] = (byte) ((c & 0xFF00) >> 8);
b[1] = (byte) (c & 0xFF);
return b;
}
}
結果如下:
bytes 大小:3
bytes1大小:2
『陸』 Java:System.out.println會自動將byte轉換成char,如何顯示二進制出來呢
System.out.println(Integer.toBinaryString(tmp[i]));
『柒』 java中char類型是占兩個位元組的!也就是說定義 char='A'其實是占兩個位元組的,但是一個字
char類型的確是兩個位元組。
getBytes()方法的功能是使用系統默認字元集對字元串進行編碼,返回位元組數組。中文系統默認GBK編碼。GBK兼容ASCII編碼,就是說,127以內的字元和ASCII編碼表一樣一樣滴。。
"AAA".getBytes()按照默認GBK編碼返回的就是長度為3位元組的數組,所以長度為3。
"哈哈哈".getBytes()按照默認GBK編碼返回的就是長度為6位元組的數組,因為每個漢字編碼為2個位元組。
使用InputStream從文件中讀取時,也要看文件採用的是何種編碼。根據編碼將讀入的位元組進行解碼才能得到正確的字元。
『捌』 在java中,ByteToCharConverter類已不推薦使用,想問一下這個類可以用其他那個類替換,求替換的詳細步驟。
直接用強制類型轉換:
char c= 'a';
byte b= (byte)c;
『玖』 java char 的位元組問題
java中的char佔2個位元組
1:「位元組」是byte,「位」是bit ;
2: 1 byte = 8 bit ;
char 在java中是2個位元組。java採用unicode,2個位元組(16位)來表示一個字元。
代碼如下:
public class Test {
public static void main(String[] args) {
String str= "中";
char x ='中';
byte[] bytes=null;
byte[] bytes1=null;
try {
bytes = str.getBytes("<a href="https://www..com/s?wd=utf-8&tn=44039180_cpr&fenlei=-bIi4WUvYETgN-TLwGUv3En1DkPjmknj6v" target="_blank" class="-highlight">utf-8</a>");
bytes1 = charToByte(x);
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("bytes 大小:"+bytes.length);
System.out.println("bytes1大小:"+bytes1.length);
}
public static byte[] charToByte(char c) {
byte[] b = new byte[2];
b[0] = (byte) ((c & 0xFF00) >> 8);
b[1] = (byte) (c & 0xFF);
return b;
}
}
結果如下:
bytes 大小:3bytes1大小:2
『拾』 jsp中ByteToCharConverter類出錯,怎麼找到一個別的類替換
如果是想解決編碼問題,而不是在解演算法題的話,我給出一個解決方案:
s = new String(s.getBytes("ISO8859_1"),"GB2312");