我想将String转换为字节数组但是数组必须有256个位置,我的意思是,像这样:
public byte[] temporal1 = new byte[256];
public byte[] temporal2 = new byte[256];
所以,当我这样做时:
String send = "SEND_MESSAGE";
String sendAck = "SEND_MESSAGE_ACK";
temporal1 = send.getBytes();
temporal2 = sendAck.getBytes();
我收到此错误:" ./ th.java:24:错误:< identifier>预期&#34 ;.我知道如果我public byte[] temporal1 = send.getBytes();
它可以工作,但我需要具有该大小的数组来将其与其他字节数组进行逐字节比较。
答案 0 :(得分:0)
可以请您显示控制台中发生的确切异常或错误。因为它对我来说完全没问题。
byte b1[] = new byte[256];
String s = "hello there";
b1 = s.getBytes();
System.out.println(b1);
答案 1 :(得分:0)
要使字节数组temporal1
填充最多256个字节,您可以执行以下操作:
public byte[] temporal1 = new byte[256];
String send = "SEND_MESSAGE";
byte[] sendB = send.getBytes(send, StandardCharsets.UTF_8);
System.arraycopy(sendB, 0, temporal1, 0, Math.max(256, sendB.length));
如果你想要一个类似于终止0字节的C,sendB可能只提供255个字节:Math.max(255, sendB.length)
。
更好:
String send = "SEND_MESSAGE";
byte[] sendB = send.getBytes(send, StandardCharsets.UTF_8);
byte[] temporal1 = Arrays.copyOf(sendB, 256); // Pads or truncates.
temportal1[255] = (byte) 0; // Maybe
答案 2 :(得分:0)
从定义大小的byte[]
获取String
:
public static byte[] toBytes(String data, int length) {
byte[] result = new byte[length];
System.arraycopy(data.getBytes(), 0, result, length - data.length(), data.length());
return result;
}
<强>实施例强>
byte[] sample = toBytes("SEND_MESSAGE", 256);
sample
的大小为256。