J'utilise Voici comment je vais écrire les données d'octets dans le fichier (it Sorties en peu d'Endian par défaut) P> dataOutputStream code> pour écrire dans un fichier, mais je veux modifier l'Endian des données.
public void generateBinObjFile(String outputFile)
try {
// Create file
DataOutputStream stream = new DataOutputStream(
new FileOutputStream(outputFile));
stream.writeShort(this.quantize(this.xComponents.get(index), //<-- Short is written in little Endian
this.min_x, this.max_x) - 32768);
} // catch statements here
5 Réponses :
Vous ne pouvez pas : p>
Écrit un court-circuit au flux de sortie sous-jacent sous forme de deux octets, d'abord élevé d'octets. p> blockQuote>
Tous les méthodes "multi-octets" fonctionnent comme ça. Si vous en avez besoin, vous avez besoin d'écrire vous-même des octets. P>
Il génère les données d'une manière lisible par DataGuThetstream. P>
Si vous devez vous soucier de l'endansness, vous ne devez pas utiliser de flux de données *. P>
Vous ne pouvez pas faire cela avec vous peut em> utiliser un Vous pouvez utiliser le dataOutputStream code>, qui utilise toujours Big Endian. P>
bytebuffer code>
sur lequel vous pouvez appeler Commande () CODE>
Pour influencer la manière dont il se lit et écrit des données. P>
bytebuffer code> em> pour préparer un octet [] code> que vous écrirez avec un
de sortie classique Code> plus tard sur ou em> aller entièrement à Nio et utilisez n'importe quel
ECONNAIREBYTECHANNEL CODE>
pour l'écriture p>
Il est indiqué "Impossible d'instancier le type" BYTEBUFFER "" .Je'm à l'aide du nouveau mot-clé pour en créer un objet, existe-t-il un moyen différent ou plus correct de créer une instance d'un objet?
@Deztructius: Vérifiez le Javadoc que j'ai lié, s'il vous plaît.
Vous pouvez utiliser bytebuffer.allocateectirect (intorm int) code>
Toutes les réponses données ont raison. Vous pouvez cependant prendre la source de DataOutputStream, la coller dans une nouvelle classe et inverser l'ordre des octets dans les différents Writeshort, Writelong, etc. (ou du moins dans ceux dont vous avez besoin). Ce n'est pas un travail si difficile. P>
Évidemment, vous ne pouvez pas ensuite l'utiliser pour communiquer avec une DataGutant de l'autre côté, mais je suppose que vous devez écrire dans un fichier ou un socket avec un programme C de l'autre côté, vous n'avez donc pas besoin de DataGuTReam. < / p>
Vous pouvez utiliser: com.google.common.io.littittitlediNDataAutTream strong> de p>
HTTPS: / /google.github.io/guava/relases/17.0/aplon/docs/com/google/common/io/LittleendiNDataAutPutStream.html
ou copier cette classe:
http://www.cafeaulait.org/books/javaio/ioexamples/ 07 / petit dactoceianOutputtream.java p>