Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
for (int i = 0; i < list.size(); i++) {
byteArray[i] = list.get(i);
}
for (int i = 0; i < byteArray.length; i++) {
list.set(i, byteArray[i]);
}
ArrayList<Byte> может быть заполнен данными только Byte?PHP:for (int i = 0; i < list.size(); i++) { byteArray[i] = list.get(i); } for (int i = 0; i < byteArray.length; i++) { list.set(i, byteArray[i]); }
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutput out = null;
try {
out = new ObjectOutputStream(bos);
out.writeObject(yourObject);
out.flush();
// TODO: делай чо хош, вот байты.
byte[] yourBytes = bos.toByteArray();
} finally {
try {
bos.close();
} catch (IOException ignored) {}
}
гуглом пользовался или забанили?Здравствуйте.
Помогите пожалуйста перевести List (с данными) перевести в byte[] и обратно
ByteArrayInputStream bis = new ByteArrayInputStream(yourBytes);
ObjectInput in = null;
try {
in = new ObjectInputStream(bis);
// TODO: делай чо хош, вот объект.
Object yourObject = in.readObject();
} finally {
try {
if (in != null) {
in.close();
}
} catch (IOException ignored) {}
}
Ты орешь? Ты понимаешь, что таким хреном ты только List<Byte> конвертируешь в массив? Мда.PHP:for (int i = 0; i < list.size(); i++) { byteArray[i] = list.get(i); } for (int i = 0; i < byteArray.length; i++) { list.set(i, byteArray[i]); }
соснешь тунца, если не наследуется Serializeable. + тебе уязвимость.PHP:ByteArrayOutputStream bos = new ByteArrayOutputStream(); ObjectOutput out = null; try { out = new ObjectOutputStream(bos); out.writeObject(yourObject); out.flush(); // TODO: делай чо хош, вот байты. byte[] yourBytes = bos.toByteArray(); } finally { try { bos.close(); } catch (IOException ignored) {} }
И то верно, но это исключительный пример. Уверен, что есть какая-нибудь апач утила для подобного)соснешь тунца, если не наследуется Serializeable. + тебе уязвимость.
та же фигня.И то верно, но это исключительный пример. Уверен, что есть какая-нибудь апач утила для подобного)
UPD: в commonslang (SerializationUtils) есть подобное, но скорее всего с Serializable та же фигня (не уверен) :/
Serializers.INSTANCE.register(Location.class, new Serializer<Location>()
{
@Override
public Location read(final ByteArrayDataInput input)
{
return new Location(
Bukkit.getWorld(input.readUTF()), input.readDouble(), input.readDouble(), input.readDouble(), input.readFloat(), input.readFloat()
);
}
@Override
public void write(final Location obj, final ByteArrayDataOutput out)
{
out.writeUTF(obj.getWorld().getName());
out.writeDouble(obj.getX());
out.writeDouble(obj.getY());
out.writeDouble(obj.getZ());
out.writeFloat(obj.getYaw());
out.writeFloat(obj.getPitch());
}
});
// Записываем локацию в массив байт.
final Location test = new Location(Bukkit.getWorld("world"), 100, 50, 100);
final ByteArrayDataOutput bado = ByteStreams.newDataOutput();
Serializers.INSTANCE.get(Location.class).write(test, bado);
// Делаем с массивом все, что душе угдоно.
final byte[] yourData = bado.toByteArray();
// Считываем локацию из массива
final ByteArrayDataInput badi = ByteStreams.newDataInput(yourData);
final Location output = Serializers.INSTANCE.get(Location.class).read(badi);
// Делаем с локацией все, что захотим.
public final class Serializers
{
public static final Serializers INSTANCE = new Serializers();
private final Map<Class<?>, Serializer> serializersMap = Maps.newHashMap();
private Serializers()
{}
public <T> void register(final Class<T> clazz, final Serializer<T> serializer)
{
Preconditions.checkNotNull(clazz, "class");
Preconditions.checkNotNull(serializer, "serializer");
this.serializersMap.put(clazz, serializer);
}
public <T, V extends Serializer<T>> V get(final Class<? extends T> clazz)
{
return (V) this.serializersMap.get(clazz);
}
public void unregister(final Class<?> clazz)
{
this.serializersMap.remove(clazz);
}
}
import com.google.common.io.ByteArrayDataInput;
import com.google.common.io.ByteArrayDataOutput;
public interface Serializer<T>
{
T read(final ByteArrayDataInput input);
void write(final T obj, final ByteArrayDataOutput out);
}
Юзабельно, но некоторые вещи так не сериализовать)Ну а если так, то, вот примерчик:
PHP:Serializers.INSTANCE.register(Location.class, new Serializer<Location>() { @Override public Location read(final ByteArrayDataInput input) { return new Location( Bukkit.getWorld(input.readUTF()), input.readDouble(), input.readDouble(), input.readDouble(), input.readFloat(), input.readFloat() ); } @Override public void write(final Location obj, final ByteArrayDataOutput out) { out.writeUTF(obj.getWorld().getName()); out.writeDouble(obj.getX()); out.writeDouble(obj.getY()); out.writeDouble(obj.getZ()); out.writeFloat(obj.getYaw()); out.writeFloat(obj.getPitch()); } }); // Записываем локацию в массив байт. final Location test = new Location(Bukkit.getWorld("world"), 100, 50, 100); final ByteArrayDataOutput bado = ByteStreams.newDataOutput(); Serializers.INSTANCE.get(Location.class).write(test, bado); // Делаем с массивом все, что душе угдоно. final byte[] yourData = bado.toByteArray(); // Считываем локацию из массива final ByteArrayDataInput badi = ByteStreams.newDataInput(yourData); final Location output = Serializers.INSTANCE.get(Location.class).read(badi); // Делаем с локацией все, что захотим.PHP:public final class Serializers { public static final Serializers INSTANCE = new Serializers(); private final Map<Class<?>, Serializer> serializersMap = Maps.newHashMap(); private Serializers() {} public <T> void register(final Class<T> clazz, final Serializer<T> serializer) { Preconditions.checkNotNull(clazz, "class"); Preconditions.checkNotNull(serializer, "serializer"); this.serializersMap.put(clazz, serializer); } public <T, V extends Serializer<T>> V get(final Class<? extends T> clazz) { return (V) this.serializersMap.get(clazz); } public void unregister(final Class<?> clazz) { this.serializersMap.remove(clazz); } }PHP:import com.google.common.io.ByteArrayDataInput; import com.google.common.io.ByteArrayDataOutput; public interface Serializer<T> { T read(final ByteArrayDataInput input); void write(final T obj, final ByteArrayDataOutput out); }
ByteBuf buf = Unpooled.buffer();
PacketBuffer pbuf = new PacketBuffer(buf);
NBTTagCompound nbt = new NBTTagCompound();
NBTTagList nbtlist = new NBTTagList();
nbtlist.appendTag(new NBTTagString("one"));
nbtlist.appendTag(new NBTTagString("two"));
nbt.setTag("list", nbtlist);
pbuf.writeCompoundTag(nbt);