1. java 怎么将string转换成byte
1.string 转 byte[]
byte[] midbytes=isoString.getBytes("UTF8");
//为UTF8编码
byte[] isoret = srt2.getBytes("ISO-8859-1");
//为ISO-8859-1编码
其中ISO-8859-1为单字节的编码
2.byte[]转string
String isoString = new String(bytes,"ISO-8859-1");
String srt2=new String(midbytes,"UTF-8");
说明:
在网络传输或其它应用中常常有同一的中间件,假设为String类型。因此需要把其它类型的数据转换为中间件的类型。
将字符串进行网络传输时,如socket,需要将其在转换为byte[]类型。这中间如果采用用不同的编码可能会出现未成预料的问题,如乱码。
下面举个例子:
我们用socket传输String类型的数据时,常常用UTF-8进行编码,这样比较可以避免一个“中文乱码”的问题。
发送端:
String sendString="发送数据";
byte[] sendBytes= sendString .getBytes("UTF8");
.......socket发送
接受端:
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");
这时Mybytes中的数据将是[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" );
这样所需要的字节就有恢复了。
2. 在java中,将一个String类型的值转换为byte类型,只能占2个字节存储。
Byte.parseByte(s, 16)将s转换成有符号数 ,这一个字节能表示的范围是:-128~127,下面的代码是在搜来的代码基础上稍做了修改,调用的时候你只要把temperature传进去即可得到转换后的byte数组,byte数组的长度由temperature的值决定,你要求只能占2个字节存储的话temperature的长度就要确保不超过4,这由你自己的代码来约束。
public static byte[] hex2byte(String hex) {
String digital = "0123456789ABCDEF";
char[] hex2char = hex.toCharArray();
byte[] bytes = new byte[hex.length() / 2];
int temp;
for (int i = 0; i < bytes.length; i++) {
temp = digital.indexOf(hex2char[2 * i]) * 16;
temp += digital.indexOf(hex2char[2 * i + 1]);
bytes[i] = (byte) (temp & 0xff);
}
return bytes;
}
3. java中String类型的如何转为byte[]
一、String转byte数组简单版:
1、String
str
=
"abcd";
2、byte[]
bs
=
str.getBytes();
二、复杂版
//
pros
-
no
need
to
handle
UnsupportedEncodingException
//
pros
-
bytes
in
specified
encoding
scheme
byte[]
utf8
=
"abcdefgh".getBytes(StandardCharsets.UTF_8);
System.out.println("length
of
byte
array
in
UTF-8
:
"
+
utf8.length);
System.out.println("contents
of
byte
array
in
UTF-8:
"
+
Arrays.toString(utf8));
Output
:
length
of
byte
array
in
UTF-8
:
8
contents
of
byte
array
in
UTF-8:
[97,
98,
99,
100,
101,
102,
103,
104]1
(3)javastring数组转byte数组扩展阅读:
反过来,将Byte数组转化为String的方法
using
System;
using
System.Text;
public
static
string
FromASCIIByteArray(byte[]
characters)
{
ASCIIEncoding
encoding
=
new
ASCIIEncoding(
);
string
constructedString
=
encoding.GetString(characters);
return
(constructedString);
}
·
4. Java 字符串转化为字节
string型转byte 要怎么转 有两种方式
getBytes()
使用平台默认的字符集将此 String 解码为字节序列,并将结果存储到一个新的字节数组中。返回byte[]
getBytes(String charsetName)
使用指定的字符集将此 String 解码为字节序列,并将结果存储到一个新的字节数组中。返回
byte[]
你那样写是可以的 不过 你需要保证你的机器8001这个端口开放才能正常运行 我给你写了一个测试类
public class T {
public static void main(String[] args) throws IOException
{
Socket s = new Socket(InetAddress.getByName("127.0.0.1"),80);
System.out.println(s);
}
}
5. string转成byte[]存成什么 是ASCII吗
并不一定是ASCII码。
1、 在java语言中,String 对象通过方法geBytes()可以获得byte[]对象,
它实际上是把内部的char字符,按照平台默认的字符集编码成byte数组,
2、 此外,也可以使用getBytes(Charset charset)指定字符集编码。
3、 byte[] 既可以理解为数组,它本身也是个对象,在该数组中,每个数组成员都是
基础数据类型byte,表达范围是-128 至 127。
4、 所以,如果按照uinicode字符集来转换的话,如包含非英文字母的String 对象转换成的byte[],它的成员可能会超出ASCII码的表示范围。
例如,“汉字”的编码UTF-8编码为 {0xE6,0xB1,0x89,0xE5,0xAD,0x97}(摘自网络"Unicode“),如果将其转换为byte[],它的每个成员的值都会超出ASCII码的范围。
6. java中如何将字符串转化成特定长度的字节数组
publicclassTest{
publicstaticvoidmain(String[]args){
byte[]byteArray="Test".getBytes();
byte[]byteArray2="测试".getBytes();
System.out.println("byteArray.length="+byteArray.length);
System.out.println("byteArray2.length="+byteArray2.length);
for(inti=0;i<byteArray.length;i++)
System.out.print((char)byteArray[i]);
System.out.println();
for(inti=0;i<byteArray2.length;i++)
System.out.print((char)byteArray2[i]);
}
}
汉字2个字节编码,1个汉字转换成2bytes
7. java怎么将string转换成byte数组
思路:先定义字符串,再通过getBytes()方法进行转换数组就可以了。
参考代码:
Strings="ZhiDao";//定义字符串
byte[]sb=s.getBytes();//把字符串转换成数组
String的getBytes()方法是得到一个系统默认的编码格式的字节数组。将一个String类型的字符串中包含的字符转换成byte类型并且存入一个byte[]数组中。