[PATCH 1/2] misc: introduce string_to_bin

Baruch Siach baruch at tkos.co.il
Thu Aug 19 08:37:12 EDT 2010


Hi Jean-Christophe,

On Thu, Aug 19, 2010 at 08:43:48AM +0200, Jean-Christophe PLAGNIOL-VILLARD wrote:
> On 17:13 Thu 05 Aug     , Baruch Siach wrote:
> > On Thu, Aug 05, 2010 at 03:41:14PM +0200, Jean-Christophe PLAGNIOL-VILLARD 
> > wrote:
> > > On 15:43 Thu 05 Aug     , Baruch Siach wrote:
> > > > On Thu, Aug 05, 2010 at 02:23:49PM +0200, Jean-Christophe PLAGNIOL-VILLARD 
> > > > wrote:
> > > > > 	how about use the kernel printf format instead
> > > > 
> > > > How can I use printf to convert a string representation to binary?
> > > as example for ethernet address on the kernel we use %M or for UUID we %U to
> > > print it in the right format. so take a look on vsprintf.c
> > 
> > This is good for converting binary values to strings, not the other way around 
> > as we do here.
> It's the same here u can do %xs to print it as hexa so it will be easier to
> use

Apparently I'm missing something obvious here. I'll try to clarify how I see 
things. Feel free to correct my understanding.

The various printf() variants take binary data as an argument, and translate 
it into a string representation, according to the format string.

The purposed string_to_bin() function does the opposite. It takes a string 
argument

const char* mac_str = "01:02:03:04:05:06";

and return the binary equivalent of this string in the buf pointer:

u8 mac[6];

string_to_bin(mac_str, mac, 6)

now the mac[] array contains the binary representation of the string mac_str, 
in big-endian order.

I've found no way to do the same with printf.

baruch

-- 
                                                     ~. .~   Tk Open Systems
=}------------------------------------------------ooO--U--Ooo------------{=
   - baruch at tkos.co.il - tel: +972.2.679.5364, http://www.tkos.co.il -



More information about the barebox mailing list