On Wed, Dec 29, 2010 at 3:51 PM, Anatol Pomozov <anatol.pomo...@gmail.com> wrote: > Hi > > On Thu, Dec 23, 2010 at 12:37 AM, Anatol Pomozov > <anatol.pomo...@gmail.com> wrote: >> Hi, >> >> I manipulate with strings in my application such as storing/reading >> to/from binary files. And I need to convert a string to/from array of >> bytes. What is the best way of doing it in Vala? >> >> Looking into string class http://valadoc.org/glib-2.0/string.html I >> see a method called string#to_utf8() that converts string to array of >> chars. But I cannot find any other methods. >> >> So I have 2 questions: >> - How to convert a string to array of chars in encoding different >> from UTF8. Something like this one >> http://download.oracle.com/javase/6/docs/api/java/lang/String.html#getBytes(java.nio.charset.Charset) >> - How to convert array of chars/uint8 back to string? Like this one >> http://download.oracle.com/javase/6/docs/api/java/lang/String.html#String(byte[], >> java.nio.charset.Charset) > > I think I found a way to convert string to bytes in Vala. Actually it > is as simple as casting string to char* and back. Under the hood > strings in vala is just a pointer to char. > > Here is an example that shows it: > > string hello = "abcd"; > char* ch = (char*) hello; > stdout.printf("%c\n", ch[1]); // Second char, that is 'b'
It actually produces an interesting effect. You *can* change content of a string (that are claimed as immutable) string hello = "abcd"; char* ch = (char*) hello; ch[0] = 'z'; stdout.printf(hello); // Prints 'zbcd' PS Casting string to/from char* is an interesting technique and worth mention about it in the tutorial. _______________________________________________ vala-list mailing list vala-list@gnome.org http://mail.gnome.org/mailman/listinfo/vala-list