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");