您的位置:首页 > 移动开发 > Android开发

8、常用Android类型转换

2014-09-24 08:41 309 查看

1、类型转换

(1)byte转int(int可转为long、double、float)

//Byte转int
public static int byteToInt(byte[] data,int offset)
{
int result = 0;
int n1,n2,n3,n4;

n1 = data[offset+3] & 0xFF;
n2 = data[offset+2] & 0xFF;
n3 = data[offset+1] & 0xFF;
n4 = data[offset] & 0xFF;
result = n1 << 24 | n2 << 16 | n3 << 8 | n4;
return result;
}

(2)byte转Hex

//byte转Hex
public static String byteToHex(byte[] b)
{
char HEX_DIGITS[] = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
StringBuilder stringBuilder = new StringBuilder(b.length * 2);
for(int i = 0; i < b.length; i++)
{
stringBuilder.append(HEX_DIGITS[(b[i] & 0xf0) >> 4]);
stringBuilder.append(HEX_DIGITS[b[i] & 0x0f]);
}
return stringBuilder.toString();
}

(3)HexString转long

//HexString转long
public static long hexStringtoLong(String s)
{
String serial = "0123456789ABCDEF";
s = s.trim().toUpperCase();
if(s.length() > 8)
return 0;
long num = 0;
int len = s.length();
for(int i = 0 ; i < len; i++)
{
num += (serial.indexOf(s.charAt(i)) << (4*(len - i - 1)));
}
return num;
}

2、Unicode编码

Unicode(统一码、万国码、单一码):是一种在计算机平台上使用的字符编码,他为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足夸语言、夸平台进行文本转换、处理的要求。
(1)byte[]是字节数组类型,和init[]类似,只是一个是字节类型,一个是整形的;
(2)char是UNICODE字符,为16位的整数;
(3)String是一个类,一般用来表示字符串;
(4)hello.getBytes()意思是把hello这个字符串转化为字节流(byte类型);一般而言,前面加个byte[]型变量,把转换后的字节流放在这个变量里,如:byte[] bytes = hello.getBytes();

1)Char转为byte

//char转为byte
private byte[] getBytes(char[] chars)
{
Charset cs = Charset.forName("UTF-8");
CharBuffer cb = CharBuffer.allocate(chars.length);
cb.put(chars);
cb.filp();
ByteBuffer bb = cs.encode(cb);
return bb.array();
}

2)byte转为Char

//byte转char
private char[] getChars(byte[] bytes)
{
Charset cs = Charset.forName("UTF-8");
ByteBuffer bb = ByteBuffer.allocate(bytes.length);
bb.put(bytes);
bb.filp();
CharBuffer cb = cs.decode(bb);
return cb.array();
}

3)string转为byte[]

//string转byte[]
//改为UTF8编码
byte[] bytes = strString.getBytes("UTF8");
//改为ISO-8859-1编码
byte[] isoret = strString.getBytes("ISO-8859-1");

4)byte[]转为string

//byte转string
String strString = new String(bytes,"ISO-8859-1");
String strString = new String(bytes,"UTF-8");

3、使用说明

在网络传输或其他应用中常常有同一的中间件,假设为string类型,因此需要把其它类型的数据转换为中间件的类型。
将字符串进行网络传输时,如socket,需将其在转为byte[]类型,这中间如果采用不同的编码可能会出现乱码。
用socket传输string类型的数据时,常常用UTF-8进行编码,这样比较可以避免一个中文乱码现象。
发送端:
String sendString = “发送数据”;
byte[] sendBytes = sendString.getBytes("UTF8");
发送sendBytes数据
接收端:
String recString = new String(sendBytes,"UTF-8");
此处会出现另一个问题,如果发送的数据本身就是byte[]类型,然后将其通过UTF-8编码转换为中间件String类型就会出现问题。
如:
byte[] bytes = new byte[] { 50, 0, -1, 28, -24 };
String sendString = new String( bytes ,"UTF-8");
byte[] sendBytes = sendString.getBytes("UTF8");
然后发送数据,接收时进行逆向转换

String recString=new String( sendBytes ,"UTF-8");
byte[] Mybytes=isoString.getBytes("UTF8");
得到的数据为[50,0,-17,-65,-67,28,-17,-65,-67]。因此,需要采用单字节的编码方式进行转换
String sendString=new String(  bytes ,"UTF-8");   改为       String sendString=new String(  bytes ,"ISO-8859-1" );
byte[] Mybytes=isoString.getBytes("UTF8");  改为   byte[] Mybytes=isoString.getBytes( "ISO-8859-1" );
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Android 类型转换