Avatar billede lmdthel Nybegynder
27. oktober 2004 - 19:40 Der er 11 kommentarer og
1 løsning

Ascii til unicode konvertering

Hej

Er der en "nem" måde at konvertere fra ascii til unicode på i csharp.

Hvordan skal jeg gribe det an hvis jeg f.eks har en variabel som indeholder en streng som f.eks hedder "hello world", og jeg vil konvertere den til unicode ?
Avatar billede arne_v Ekspert
27. oktober 2004 - 19:43 #1
string's er altid i unicode i C# !

Når du udskriver den til en fil kan du vælge mellem forskellige encodinger:
ASCII, ISO-8859-1, UTF-8 etc..

Så hvad vil du ?
Avatar billede lmdthel Nybegynder
27. oktober 2004 - 20:12 #2
hmm jeg hvad vil jeg egentlig.. nu blev jeg lige forvirret *S*

Ok måske jeg har misforstået det lidt, så jeg beskriver lige hvad det gerne skal ende op i jeg gerne vil:

lad os tage ordet 'HEJ' , det som jeg gør i "hånden" , er at jeg laver HEJ til hex , så bliver det til :

72 69 74

Det konvertere til så til binær:

1001000 1000101 1001010

Men det er 7 bit, og jeg skal have det i 8 bit.

så det konvertere jeg ved at "flytte" sidste bit i Eop til H  og flytte de 2 sidste bit op til E

Det giver så:

11001000 10100010 00010010

Og ja det konvertere jeg så tilbage til hex

c8 A2 12

Og det er så hvad jeg gerne vil ende op med..

Og nu er mit "nye" spørgsmål så, findes der ikke noget smartere til det ? jeg ved faktisk ikke HELT hvad det er jeg gør, udover at jeg vil have
Avatar billede arne_v Ekspert
27. oktober 2004 - 20:18 #3
Normalt vil man sige at 72 69 74 er 01001000 01000101 01001010 altså 8 bit
per bogstav (altid ved ASCII og ISO-8859-1, normalt ved UTF-8)

Er du igang med noget hardware tæt programmering eller ?
Avatar billede lmdthel Nybegynder
27. oktober 2004 - 20:24 #4
Ahh ikke så tæt , jeg er ved at lave et objekt som kan sende SMS beskeder i det format der hedder PDU.

Du kan se tricket her:

http://www.dreamfabric.com/sms/hello.html
Avatar billede wisen Nybegynder
27. oktober 2004 - 20:44 #5
.. prøv at kigge på System.Text.Encoding klassen
Avatar billede arne_v Ekspert
27. oktober 2004 - 21:44 #7
Det der har vist ikke meget med Unicode at gøre.

Og jeg tror heller ikke at der er noget rigtigt brugbart i System.Text.Encoding.

Der skal special kode til !
Avatar billede arne_v Ekspert
27. oktober 2004 - 21:44 #8
using System;
using System.Text;

public class BitFun
{
    private static void From8To7(byte[] b, ref int boffset, byte[] res, ref int resoffset)
    {
        long temp = 0;
        int blen = Math.Min(b.Length - boffset, 8);
        for(int i = 0; i < blen; i++)
        {
            temp |= (((long)b[boffset + i]) << (i * 7));
        }
        boffset += blen;
        int reslen = (blen*7+7)/8;
        for(int j = 0; j < reslen; j++)
        {
            res[resoffset + j] = (byte)((temp >> (j * 8))& 0xFF);
        }
        resoffset += reslen;
    }
    public static byte[] Encode(string s)
    {
        byte[] b = Encoding.ASCII.GetBytes(s);
        int boffset = 0;
        byte[] res = new byte[(b.Length*7+7)/8];
        int resoffset = 0;
        while(boffset < b.Length)
        {
            From8To7(b, ref boffset, res, ref resoffset);
        }
        return res;
    }
    public static void Main(string[] args)
    {
        byte[] data = Encode("hellohello");
        for(int k = 0; k < data.Length; k++)
        {
            Console.Write(String.Format("{0:X2} ",data[k]));
        }
        Console.WriteLine();
    }
}
Avatar billede arne_v Ekspert
27. oktober 2004 - 21:44 #9
Output:

E8 32 9B FD 46 97 D9 EC 37
Avatar billede arne_v Ekspert
27. oktober 2004 - 21:44 #10
Jeg tog eksemplet fra linket
Avatar billede lmdthel Nybegynder
27. oktober 2004 - 22:14 #11
Hold da op, du har simpelthen løst mit problem for mig!!

Endnu engang imponerer du mig Arne.

Jaa jeg ville jo gerne sende dig en flaske vin, men det får jeg jo nok ikke lov til *S*

Men mange mange tak for hjælpen..
Avatar billede arne_v Ekspert
27. oktober 2004 - 22:16 #12
Jeg ligger et svar så
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester