2011-04-28 29 views
5

Tôi có một số biến mảng byte [] mà tôi cần chuyển đổi thành bộ đệm chuỗi.Cách tốt nhất để chuyển mảng byte [] thành bộ đệm chuỗi

có phương pháp cho loại chuyển đổi này không?

Cảm ơn

Cảm ơn tất cả các bạn cho responses..However của bạn tôi đã không làm cho bản thân mình rõ ràng .... Tôi đang sử dụng một số byte [] mảng được xác định trước khi public static "dưới" lớp khai báo cho chương trình java của tôi. những "trường" này được tái sử dụng trong "cuộc sống" của quá trình. Khi chương trình phát ra thông báo trạng thái, (được ghi vào một tệp) tôi đã định nghĩa một bộ đệm chuỗi (mesg_data) được sử dụng để định dạng thông điệp trạng thái. Vì vậy, khi chương trình thực thi tôi đã cố gắng msg2 = String (byte_array2) tôi nhận được một lỗi biên dịch: không thể tìm thấy biểu tượng biểu tượng: Phương pháp String (byte []) vị trí: lớp APPC_LU62.java.LU62XnsCvr convrsID = String (conversation_ID);

dụ:

public class LU62XnsCvr extends Object 
      . 
      . 
static String convrsID ; 
static byte[] conversation_ID = new byte[8] ; 

Vì vậy, tôi không thể sử dụng "năng động" định nghĩa của một biến chuỗi vì biến tương tự được sử dụng trong nhiều lần xuất hiện.

Tôi hy vọng tôi làm bản thân mình rõ ràng Nhờ bao giờ quá nhiều

Guy

+0

bạn cần chuỗi đại diện byte? hoặc mỗi byte đại diện cho một char? – Dave

+0

Vì vậy, nhiều câu trả lời trùng lặp ... –

Trả lời

6
String s = new String(myByteArray, "UTF-8"); 
StringBuilder sb = new StringBuilder(s); 
+1

Tại sao điều này lại được bình chọn? Vì mã hóa ký tự bị thiếu? – helpermethod

+2

Có, bạn nên chỉ định mã hóa ký tự. Nếu bạn muốn một bản đồ byte thành một ký tự, thì hãy sử dụng bảng mã "US-ASCII". Nếu bạn không chỉ định mã hóa, bạn có thể nhận được các kết quả khác nhau trong các môi trường khác nhau. Trong mọi trường hợp, chỉ định "US-ASCII" sẽ làm rõ. – AgilePro

3

Bạn có thể biến nó thành một String trực tiếp

byte[] bytearray 
.... 
String mystring = new String(bytearray) 

và sau đó chuyển đổi sang một StringBuffer

StringBuffer buffer = new StringBuffer(mystring) 
5

Có một cấu trúc tor rằng một mảng byte và mã hóa:

byte[] bytes = new byte[200]; 
//... 

String s = new String(bytes, "UTF-8"); 

Để dịch byte thành ký tự bạn cần chỉ định mã hóa: lược đồ theo đó chuỗi (thường có chiều dài 1,2 hoặc 3) giá trị 0-255 (là: chuỗi byte) được ánh xạ tới các ký tự. UTF-8 có lẽ là cược tốt nhất làm mặc định.

0

Nó phụ thuộc hoàn toàn vào các mã hóa ký tự, nhưng bạn muốn:

String value = new String(bytes, "US-ASCII"); 

này sẽ làm việc cho các giá trị US-ASCII.

Xem Charset cho mã hóa ký tự hợp lệ khác (ví dụ, UTF-8)

1

Bạn có thể sử dụng

str = new String(bytes) 

By thewhat mã trên không là để tạo ra một chuỗi java (tức là UTF-16) với mã hóa ký tự nền tảng mặc định.

Nếu mảng byte được tạo từ một chuỗi được mã hóa trong mã hóa ký tự mặc định nền tảng này sẽ hoạt động tốt.

Nếu không bạn cần phải xác định mã hóa ký tự chính xác (Charset) như

String str = new String (byte [] bytes, Charset charset) 
Các vấn đề liên quan