當前位置:首頁 » 安卓系統 » 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();
}

熱點內容
rsa加密演算法java代碼 發布:2024-04-25 11:40:07 瀏覽:882
如何改變拉桿箱上的初始密碼 發布:2024-04-25 11:17:23 瀏覽:798
內網掛代理虛擬機如何配置網卡 發布:2024-04-25 11:15:06 瀏覽:686
明日之後緩存怎麼清理 發布:2024-04-25 11:14:56 瀏覽:204
華為mate30怎麼退回安卓版 發布:2024-04-25 11:08:49 瀏覽:897
安卓新機使用前要注意什麼 發布:2024-04-25 11:03:46 瀏覽:810
藍鳥哪個配置有按摩 發布:2024-04-25 10:53:24 瀏覽:939
崩壞3要求什麼蘋果手機配置 發布:2024-04-25 10:36:59 瀏覽:142
培訓機構國內訪問學者 發布:2024-04-25 10:34:28 瀏覽:911
java靜態類 發布:2024-04-25 10:25:09 瀏覽:484