/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
Ascii, unicode eller ?
Fra : Hans J. Jensen


Dato : 13-03-04 16:22

Hej
Jeg har en String som jeg gerne vil have lavet om til en række tal. Hvert
tal skal repræsentere netop et bogstav. Jeg har tænkt på om det er muligt at
få ACSII- koderne (eller noget andet) ud for alle tegnene i strengen?. Er
der nogen som ved hvordan man omdanner en String til ASCII-koder. Kan man
eventuelt bruge UTF-8 ville det også være fint. Man kunne vel lave en masse
if-then, men der må der være en bedre måde at gøre det på?

Mvh
Hans



 
 
Janus E (13-03-2004)
Kommentar
Fra : Janus E


Dato : 13-03-04 16:38

hej hans!

måske kan du bruge denne her til at starte med

java.lang.string.getBytes("UTF-8");

den returnerer et byte array, hvor teksten er blevet konverteret efter det
givne charset. det byte array kan du så iterere over og måske lave noget bit
shifting frem og tilbage eller noget i den stil.
tja, det var da een mulighed.

vh janus

"Hans J. Jensen" <jjjg3401@hotmail.invalid> wrote in message
news:c2v8vm$1jq$1@sunsite.dk...
> Hej
> Jeg har en String som jeg gerne vil have lavet om til en række tal. Hvert
> tal skal repræsentere netop et bogstav. Jeg har tænkt på om det er muligt
at
> få ACSII- koderne (eller noget andet) ud for alle tegnene i strengen?. Er
> der nogen som ved hvordan man omdanner en String til ASCII-koder. Kan man
> eventuelt bruge UTF-8 ville det også være fint. Man kunne vel lave en
masse
> if-then, men der må der være en bedre måde at gøre det på?
>
> Mvh
> Hans
>
>


---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.620 / Virus Database: 399 - Release Date: 11-03-2004



Hans J. Jensen (13-03-2004)
Kommentar
Fra : Hans J. Jensen


Dato : 13-03-04 22:54

Hej igen.
"Janus E" skrev:
> måske kan du bruge denne her til at starte med
> java.lang.string.getBytes("UTF-8");
> den returnerer et byte array, hvor teksten er blevet konverteret efter det
> givne charset. det byte array kan du så iterere over og måske lave noget
bit
> shifting frem og tilbage eller noget i den stil.

Tak for tippet. Jeg har ikke helt forstået det med et "byte array". Jeg ved
godt hvad et array er, men hvad er en byte? Jeg prøvede:

private String s1;
[...]
Byte [] b1= s1.getBytes("US-ASCII");
String s2 = b1.toString;
System.out.println(s2);
[...]
Dette giver noget forskellig (og mærkeligt) hver gang man "køre koden".
Det som jeg gerne vil er at omdanne en String, f.eks "atcu" til "01200321",
således at 01 svarer til a, 20 til t osv. Hvordan er det man kan bruge et
byte array her? Det behøver ikke være sådan at man tager en String og får en
ny String(med tal), det kunne også være en metode som tager et
bogstav/tegn/char og returnerer en int. ?
Undskyld min store uvidenhed.

Mvh
Hans




Janus E (14-03-2004)
Kommentar
Fra : Janus E


Dato : 14-03-04 01:30

Ja, okay, jeg var vist rimelig træt da jeg svarede sidst ... bær over med
mig og mit ret dårlige forslag, der rent faktisk var ganske ubrugeligt.
Her er et løsningsforslag, jeg ikke har testet, så det er en "find selv
fejlene" opgave...

public class StringToIntValues throws Exception {
public String convert(String textToConvert, String charSet) {
byte[] bArray = textToConvert.getBytes(charSet);
StringBuffer sBuffer = new StringBuffer(bArray.length);
for (int i = 0; i < bArray.length; i++) {
sBuffer.append(Character.getNumericValue(bArray[i]));
}
return sBuffer.toString();
}
}

En byte er en 8-bit representation af din character. Det er en større opgave
at forklare idéen bag en byte, så det vil jeg meget hellere overlade til
google.

Vh Janus


"Hans J. Jensen" <jjjg3401@hotmail.invalid> wrote in message
news:c2vvu5$qq$1@sunsite.dk...
> Hej igen.
> "Janus E" skrev:
> > måske kan du bruge denne her til at starte med
> > java.lang.string.getBytes("UTF-8");
> > den returnerer et byte array, hvor teksten er blevet konverteret efter
det
> > givne charset. det byte array kan du så iterere over og måske lave noget
> bit
> > shifting frem og tilbage eller noget i den stil.
>
> Tak for tippet. Jeg har ikke helt forstået det med et "byte array". Jeg
ved
> godt hvad et array er, men hvad er en byte? Jeg prøvede:
>
> private String s1;
> [...]
> Byte [] b1= s1.getBytes("US-ASCII");
> String s2 = b1.toString;
> System.out.println(s2);
> [...]
> Dette giver noget forskellig (og mærkeligt) hver gang man "køre koden".
> Det som jeg gerne vil er at omdanne en String, f.eks "atcu" til
"01200321",
> således at 01 svarer til a, 20 til t osv. Hvordan er det man kan bruge et
> byte array her? Det behøver ikke være sådan at man tager en String og får
en
> ny String(med tal), det kunne også være en metode som tager et
> bogstav/tegn/char og returnerer en int. ?
> Undskyld min store uvidenhed.
>
> Mvh
> Hans
>
>
>


---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.620 / Virus Database: 399 - Release Date: 12-03-2004



Janus E (14-03-2004)
Kommentar
Fra : Janus E


Dato : 14-03-04 01:48

Lige et addendum:
Jeg glemte at tage højde for at trække fra i
Character.getNumericValue(bArray[i]), således at 'A' giver 01(*) og ikke 65,
hvilket er den egentlige ASCII-værdi for 'A'. Denne værdi bliver sikkert
ændret, hvis du bruger andre char sets end det der bruges som default (er
det UTF-8?), så det kan volde problemer. Men hvis du bare holder dig til det
almindelige char set og derfor dropper at konvertere til et andet char set
(bruger getBytes() og ikke getBytes(String charSet)), så kan du nøjes med at
skrive Character.getNumericValue(bArray[i]) - 64).
Hvis din representation af bogstavsplaceringen i alfabetet skal være på 2
cifre, så skal du huske at tage højde for tallene 1 til og med 9,
selvfølgelig. Man kunne eksempelvis:

for (int i = 0; i < bArray.length; i++) {
int value = Character.getNumericValue(bArray[i]) - 64;
if (value <= 9) {
sBuffer.append("0");
}
sBuffer.append(Character.getNumericValue(bArray[i]));
}

Husk, at bogstavet 'a' og bogstavet 'A' ikke har samme ASCII-værdi. Så måske
skulle du lave en toUpperCase() på textToConvert inden du går igang med
konverteringen.

Vh Janus


"Janus E" <dont_mail_me@thanks.com> wrote in message
news:0IN4c.14548$Nn.8740@news.get2net.dk...
> Ja, okay, jeg var vist rimelig træt da jeg svarede sidst ... bær over med
> mig og mit ret dårlige forslag, der rent faktisk var ganske ubrugeligt.
> Her er et løsningsforslag, jeg ikke har testet, så det er en "find selv
> fejlene" opgave...
>
> public class StringToIntValues throws Exception {
> public String convert(String textToConvert, String charSet) {
> byte[] bArray = textToConvert.getBytes(charSet);
> StringBuffer sBuffer = new StringBuffer(bArray.length);
> for (int i = 0; i < bArray.length; i++) {
> sBuffer.append(Character.getNumericValue(bArray[i]));
> }
> return sBuffer.toString();
> }
> }
>
> En byte er en 8-bit representation af din character. Det er en større
opgave
> at forklare idéen bag en byte, så det vil jeg meget hellere overlade til
> google.
>
> Vh Janus
>
>
> "Hans J. Jensen" <jjjg3401@hotmail.invalid> wrote in message
> news:c2vvu5$qq$1@sunsite.dk...
> > Hej igen.
> > "Janus E" skrev:
> > > måske kan du bruge denne her til at starte med
> > > java.lang.string.getBytes("UTF-8");
> > > den returnerer et byte array, hvor teksten er blevet konverteret efter
> det
> > > givne charset. det byte array kan du så iterere over og måske lave
noget
> > bit
> > > shifting frem og tilbage eller noget i den stil.
> >
> > Tak for tippet. Jeg har ikke helt forstået det med et "byte array". Jeg
> ved
> > godt hvad et array er, men hvad er en byte? Jeg prøvede:
> >
> > private String s1;
> > [...]
> > Byte [] b1= s1.getBytes("US-ASCII");
> > String s2 = b1.toString;
> > System.out.println(s2);
> > [...]
> > Dette giver noget forskellig (og mærkeligt) hver gang man "køre koden".
> > Det som jeg gerne vil er at omdanne en String, f.eks "atcu" til
> "01200321",
> > således at 01 svarer til a, 20 til t osv. Hvordan er det man kan bruge
et
> > byte array her? Det behøver ikke være sådan at man tager en String og
får
> en
> > ny String(med tal), det kunne også være en metode som tager et
> > bogstav/tegn/char og returnerer en int. ?
> > Undskyld min store uvidenhed.
> >
> > Mvh
> > Hans
> >
> >
> >
>
>
> ---
> Outgoing mail is certified Virus Free.
> Checked by AVG anti-virus system (http://www.grisoft.com).
> Version: 6.0.620 / Virus Database: 399 - Release Date: 12-03-2004
>
>


---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.620 / Virus Database: 399 - Release Date: 12-03-2004



Hans J. Jensen (15-03-2004)
Kommentar
Fra : Hans J. Jensen


Dato : 15-03-04 10:40

Tak for hjælpen nu virker det

Mvh
Hans



Søg
Reklame
Statistik
Spørgsmål : 177580
Tips : 31968
Nyheder : 719565
Indlæg : 6409081
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste