04. januar 2010 - 19:13
Der er
12 kommentarer og 1 løsning
String til big endian
Well, jeg er blank og ny indenfor hvad der angår bytes i programmering. Jeg har gjort således: byte[] eksempel = eksempel.getBytes(); Men jeg vil gerne have lavet stringet om til big endian.. hvordan gør jeg det?
Annonceindlæg fra Computerworld
04. januar 2010 - 19:14
#1
Note: I mit eksempel hed både min byte variable og string eksempel.. det skal I ikke tage jer af, det er to forskellige ting ;-)
04. januar 2010 - 19:17
#2
Big/little endian giver kun mening for >=2 byte enheder. Vil du have vendt bytesne i UTF-8 tegn som giver mere end 1 byte?
04. januar 2010 - 19:18
#3
DataInputStream/DataOutputStream kan laese og skrive big endian. NIO ByteBuffer kan laese og skrive baade big og little endian.
04. januar 2010 - 20:42
#4
Kan du give et eksempel på hvordan man vender bytesne og hvordan man skriver i big endian med outputstream?
04. januar 2010 - 21:02
#5
Selv ikke UTF-8 duer. Vi skal op i UTF-8. Her er et eksempel på at skrive UTF-16 i little og big endian. import java.nio.ByteBuffer; import java.nio.ByteOrder; public class BigEndianFun { public static void main(String[] args) { String s = "ABCabc123ÆØÅæøå"; byte[] blittle = new byte[1000]; ByteBuffer bblittle = ByteBuffer.wrap(blittle); bblittle.order(ByteOrder.LITTLE_ENDIAN); for(int i = 0; i < s.length(); i++) { bblittle.putChar(s.charAt(i)); } for(int i = 0; i < bblittle.position(); i++) { System.out.printf(" %02X", blittle[i]); } System.out.println(); byte[] bbig = new byte[1000]; ByteBuffer bbbig = ByteBuffer.wrap(bbig); bbbig.order(ByteOrder.BIG_ENDIAN); for(int i = 0; i < s.length(); i++) { bbbig.putChar(s.charAt(i)); } for(int i = 0; i < bbbig.position(); i++) { System.out.printf(" %02X", bbig[i]); } System.out.println(); } }
04. januar 2010 - 21:03
#6
Jeg kan ogs[ godt lave et eksempel som vender ved at laese og skrive.
04. januar 2010 - 21:15
#7
Som sagt er jeg ikke den skarpest hvad angår bytes, men hvordan får jeg det endelige resultat i en byte form? det er dét jeg søger! ;)
04. januar 2010 - 21:27
#8
String s = "ABCabc123ÆØÅæøå"; byte[] b = new byte[2*s.length()]; ByteBuffer bb = ByteBuffer.wrap(b); bb.order(ByteOrder.BIG_ENDIAN); for(int i = 0; i < s.length(); i++) { bb.putChar(s.charAt(i)); } vil gemme String s i byte[] b i big endian.
04. januar 2010 - 21:41
#9
Okay, tak, smid et svar.. Dog lige en sidste ting.. Jeg har to bytes, A og B. Jeg vil gerne have indsat B efter A, så de to bytes hænger sammen i én byte.
04. januar 2010 - 21:43
#10
Som en slutning på min sætning: Hvordan gør jeg det?
05. januar 2010 - 02:54
#11
svar
05. januar 2010 - 02:55
#12
Medmindre du ved at de 2 bytes kun bruger 4 bit hver (eller ihvertfald sammenlagt er <= 8 bit), så kan du ikke gemme dem i 1 byte.
05. januar 2010 - 02:56
#13
Tør man spørge om hvad det skal bruges til ?
Kurser inden for grundlæggende programmering