当前位置:首页 » 安卓系统 » androidbyte转string

androidbyte转string

发布时间: 2022-08-15 17:21:41

① android 字符串转byte数组

Android 字符串、byte数组与16进制数组间的转换

java"><spanstyle="font-family:SimSun;font-size:14px;">//字符串转换成16进制文字列的方法
publicStringtoHex(Stringstr){
StringhexString="0123456789ABCDEF";
byte[]bytes=str.getBytes();
StringBuilderhex=newStringBuilder(bytes.length*2);
for(inti=0;i<bytes.length;i++){
hex.append(hexString.charAt((bytes[i]&0xf0)>>4));//作用同n/16
hex.append(hexString.charAt((bytes[i]&0x0f)>>0));//作用同n
hex.append('');//中间用空格隔开
}
returnhex.toString();
}

//将16进制数组转换为字符串
publicstaticStringdecode(Stringbytes){
StringhexString="0123456789ABCDEF";
ByteArrayOutputStreambaos=newByteArrayOutputStream(bytes.length()/2);
//将每2位16进制整数组装成一个字节
//for(inti=0;i<bytes.length();i+=2)
//baos.write((hexString.indexOf(bytes.charAt(i))<<4|hexString.indexOf(bytes.charAt(i+1))));
//将每3位(第3位为空格)中的前2位16进制整数组装成一个字节
for(inti=0;i<bytes.length();i+=3){
baos.write((hexString.indexOf(bytes.charAt(i))<<4|hexString.indexOf(bytes.charAt(i+1))));
}
returnnewString(baos.toByteArray());
}</span>

详细

② Android蓝牙通信字节数组的数据类型转换求教

觉得你这几个方法都要改写吧。通常协议操作绝不能用String作为交换格式。多次转码。导致数据变形,特别是“同步头(2B) 包类型(1B) 数据长度(2B) ”这个数据从byte[] ->String->byte[]多次转换,100%会导致数据变化。通常只在byte[]上操作,改成private byte[]getPackage();private byte[] getHead(byte []);sendMessage(byte[]);这几个方法都改成byte[],不然即使强调硬扭弄对也有运气成分。 System.out.println("原head:"+Arrays.toString(head));String t=new String(head,"GB2312")+"hello world";System.out.println("合并gb文本:"+t);System.out.println("还原的head:"+Arrays.toString(t.getBytes("gb2312")));=========

③ android蓝牙通信、byte转换方面的问题

觉得你这几个方法都要改写吧。
通常协议操作绝不能用String作为交换格式。
多次转码。导致数据变形,
特别是“同步头(2B) 包类型(1B) 数据长度(2B) ”
这个数据从byte[] ->String->byte[]多次转换,100%会导致数据变化。
通常只在byte[]上操作,改成
private byte[]getPackage();
private byte[] getHead(byte []);
sendMessage(byte[]);
这几个方法都改成byte[],不然即使强调硬扭弄对也有运气成分。

System.out.println("原head:"+Arrays.toString(head));
String t=new String(head,"GB2312")+"hello world";
System.out.println("合并gb文本:"+t);
System.out.println("还原的head:"+Arrays.toString(t.getBytes("gb2312")));
=========
原head:[85, -86, -32, -2, -36]
合并gb文本:U��hello world
还原的head:[85, 63, 63, 104, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100]

用还原后,前5个字节中出现负值的都完全变化,即根本不能用String作为字节的交换格式。

回问被吞了?我也没看到..

④ WebService返回byte[],在Android怎么才能接收byte[]啊,跪求大神

1、使用ISO 8859-1编码将字节数组转为字符串;

android接收到之后使用byte[] receive = String.getBytes("ISO 8859-1");


2、还可以将字节数组拼成字符串,用,符号隔开每个值。

Arrays.toString(byte[] b);可以将字节数组转成这种格式。

?

其实字节也是数值型。


importjava.io.UnsupportedEncodingException;
importjava.util.Arrays;
importjava.util.Random;
publicclassMainClass{
/**
*@paramargs
*/
publicstaticvoidmain(String[]args){
//TODO自动生成的方法存根
byte[]rand=newbyte[256];
newRandom().nextBytes(rand);
Stringtranslation=null;
try{
translation=newString(rand,"ISO-8859-1");
}catch(UnsupportedEncodingExceptione){
//TODO自动生成的catch块
e.printStackTrace();
}
System.out.println("要传输的内容:"+translation);
System.out.println("模拟传输过去...");
byte[]receive=null;
try{
receive=translation.getBytes("ISO-8859-1");
}catch(UnsupportedEncodingExceptione){
//TODO自动生成的catch块
e.printStackTrace();
}
System.out.println("传输前后的内容是否相同:"+Arrays.equals(rand,receive));
}
}

⑤ 在android中实现在Edittext中输入两个字节的二进制,将两个字节转换十进制数据,在两个textview中显示

首先需要说明的是,在Android中用于输入的控件是EditText;
对EditText使用getText()方法,返回一个Editable对象,对这个对象使用toString()方法,获得一个String对象;
使用Integer.parseInt(String str);方法可以将String对象转换成Int型数据;
最后对TextView对象使用setText()方法,需要注意的是这个方法接受String对象,或者int型资源ID;
private EditText etvalue2;
private EditText etvalue1;
private TextView textView;
private int value1;
private int value2;
private int result;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

textView=(TextView)findViewById(R.id.textView);
etvalue1 = (EditText) findViewById(R.id.editText);
etvalue2=(EditText)findViewById(R.id.editText2);

findViewById(R.id.btn_run).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
value1 =Integer.parseInt(etvalue1.getText().toString()) ;
value2 = Integer.parseInt(etvalue2.getText().toString());
result =value1+value2;
textView.setText(""+result+"");
}
});
}
分享

⑥ Android蓝牙通信字节数组的数据类型转换求教!

觉得你这几个方法都要改写吧。
通常协议操作绝不能用String作为交换格式。
多次转码。导致数据变形,
特别是“同步头(2B) 包类型(1B) 数据长度(2B) ”
这个数据从byte[] ->String->byte[]多次转换,100%会导致数据变化。
通常只在byte[]上操作,改成
private byte[]getPackage();
private byte[] getHead(byte []);
sendMessage(byte[]);
这几个方法都改成byte[],不然即使强调硬扭弄对也有运气成分。

System.out.println("原head:"+Arrays.toString(head));
String t=new String(head,"GB2312")+"hello world";
System.out.println("合并gb文本:"+t);
System.out.println("还原的head:"+Arrays.toString(t.getBytes("gb2312")));
=========

⑦ Android开发中,我想把一个类(有整型数据成员和Byte[]数据成员),怎么把它转成Buffer用UDP传

UDP传递序列化对象 写了一个UDP传递对象的简单例子 服务端: Java代码
package com.udp;

import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.net.DatagramPacket;
import java.net.DatagramSocket;

public class UDPServer {
public static void main(String[] args) throws IOException {
DatagramSocket ds = new DatagramSocket(8081);
byte[] buf = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf, buf.length);
while (true) {
System.out.println("for receive....");
ds.receive(dp);
Student s = (Student)b2o(dp.getData());
System.out.println(s.name);
}

}

public static Object b2o(byte[] buffer) {
Object obj = null;
try {
ByteArrayInputStream buffers = new ByteArrayInputStream(buffer);
ObjectInputStream in = new ObjectInputStream(buffers);
obj = in.readObject();
in.close();
} catch (Exception e) {
System.out.println("error");
}
return obj;
}
} package com.udp;import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.net.DatagramPacket;
import java.net.DatagramSocket;public class UDPServer {
public static void main(String[] args) throws IOException {
DatagramSocket ds = new DatagramSocket(8081);
byte[] buf = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf, buf.length);
while (true) {
System.out.println("for receive....");
ds.receive(dp);
Student s = (Student)b2o(dp.getData());
System.out.println(s.name);
} } public static Object b2o(byte[] buffer) {
Object obj = null;
try {
ByteArrayInputStream buffers = new ByteArrayInputStream(buffer);
ObjectInputStream in = new ObjectInputStream(buffers);
obj = in.readObject();
in.close();
} catch (Exception e) {
System.out.println("error");
}
return obj;
}
}
客户端:Java代码
package com.udp;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.InetSocketAddress;

public class UDPClient {
public static void main(String[] args) throws IOException {
InetSocketAddress isa = new InetSocketAddress(InetAddress
.getByName("192.168.1.102"), 8081);
DatagramSocket ds = new DatagramSocket();
Student student = new Student();
student.name = "denghong";
DatagramPacket dp = new DatagramPacket(o2b(student), o2b(student).length, isa);
ds.send(dp);
}

public static byte[] o2b(Student s) {
ByteArrayOutputStream buffers = new ByteArrayOutputStream();
try {
ObjectOutputStream out = new ObjectOutputStream(buffers);
out.writeObject(s);
out.close();
} catch (Exception e) {
System.out.println("error");
return null;
}
return buffers.toByteArray();
}

} package com.udp;import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.InetSocketAddress;public class UDPClient {
public static void main(String[] args) throws IOException {
InetSocketAddress isa = new InetSocketAddress(InetAddress
.getByName("192.168.1.102"), 8081);
DatagramSocket ds = new DatagramSocket();
Student student = new Student();
student.name = "denghong";
DatagramPacket dp = new DatagramPacket(o2b(student), o2b(student).length, isa);
ds.send(dp);
} public static byte[] o2b(Student s) {
ByteArrayOutputStream buffers = new ByteArrayOutputStream();
try {
ObjectOutputStream out = new ObjectOutputStream(buffers);
out.writeObject(s);
out.close();
} catch (Exception e) {
System.out.println("error");
return null;
}
return buffers.toByteArray();
}}
序列化对象Java代码
package com.udp;

import java.io.Serializable;

public class Student implements Serializable{

private static final long serialVersionUID = -5971668520303705956L;
public String name;

}

⑧ String转byte android

public void Stringtobyte(String a, byte[] bytes){
bytes=a.getBytes();
System.out.print(bytes);
}

⑨ 做Android蓝牙通信,byte转int求教

传输的2种方式:
1. 16 进制传输, 可以打印字符, 所有的内容都是0x00-0xFF,转化为byte的时候直接把16进制转化为byte
2. AscII 转化 new String(byte), 比如特殊字符串abc , 转化为byte的时候取字符的ASCII码,转化为byte
1. 首先理解左移、右移:
1<<1 =2 : 1左移1位, 相当于乘2,左移多少位,乘多少个2
1: 0000 0001 1
<<1: 0000 0010 2,超出8位长度丢掉,左边补0

2>>1 = 1 : 右移, 右边补0
2: 0000 0010 2
2>>1 0000 0001 1
如何把int 转化为byte 数组
使用byteArrayOutputStream
使用左移、右移
2. 使用左右移动实现
App->Ble 小端存储
public static byte[] int2BytesArray(int n) {
byte[] b = new byte[4];
for (int i = 0; i < 4; i++) {
b[i] = (byte) (n >> (24 - i * 8));
}
byte[] transitionByte=new byte[4];
transitionByte[3]=b[0];
transitionByte[2]=b[1];
transitionByte[1]=b[2];
transitionByte[0]=b[3];
return transitionByte;
}
比如: 00001100 00001111 00001001 00000001 : 202311937【int】
使用小端存储: 低字节存储低字节 高字节存储高字节
i= 0 右移24个字节 00000000 00000000 00000000 00001100
转化为byte, 丢弃前3个字节, 00001100 高字节
transitionByte[3]=b[0]; 高字节存储高地址

transitionByte[2]:
i=1 右移动16 个字节 00000000 00000000 00001100 00001111
转化为byte, 丢弃前3个字节 00001111
最终:00001111
Ble->App 数据解析
byte[] sTime = new byte[4]; // 小端存储 byte[0] 存储低位

⑩ android字符串转换成16进制怎么转

android字符串转换成16进制,参考如下内容:
/**
* 字符串转换成十六进制字符串
* @param String str 待转换的ASCII字符串
* @return String 每个Byte之间空格分隔,如: [61 6C 6B]
*/
public static String str2HexStr(String str)
{

char[] chars = "0123456789ABCDEF".toCharArray();
StringBuilder sb = new StringBuilder("");
byte[] bs = str.getBytes();
int bit;

for (int i = 0; i < bs.length; i++)
{
bit = (bs[i] & 0x0f0) >> 4;
sb.append(chars[bit]);
bit = bs[i] & 0x0f;
sb.append(chars[bit]);
sb.append(' ');
}
return sb.toString().trim();
}

热点内容
qtp录制的脚本 发布:2024-05-05 01:14:04 浏览:366
如何安装卡罗拉安卓系统 发布:2024-05-05 01:09:00 浏览:984
sql创建表查询表 发布:2024-05-05 01:00:12 浏览:798
食色抖音上传 发布:2024-05-05 00:55:56 浏览:657
java图片下载 发布:2024-05-05 00:50:45 浏览:597
唱吧如何上传伴奏 发布:2024-05-05 00:49:04 浏览:444
什么配置单反拍视频最好 发布:2024-05-05 00:30:56 浏览:478
sql敏感 发布:2024-05-05 00:28:20 浏览:62
android工程师笔试 发布:2024-05-05 00:10:52 浏览:948
python调试pycharm 发布:2024-05-05 00:10:51 浏览:707