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 tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
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