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