From: Leslie <jlturriff@centurytel.net>
Subject: Re: How to convert a string containing two hex digits to a character?
Date: Tue, 05 Jan 2010 20:39:00 -0600
Date: 2010-01-05T20:39:00-06:00 [thread overview]
Message-ID: <hi0t2b$nub$1@news.albasani.net> (raw)
In-Reply-To: eb6745fd-aa93-4ce5-a925-0099716c700d@c34g2000yqn.googlegroups.com
Hibou57 (Yannick Duchêne) wrote:
> You may first convert from two 4 bits digits, that is, convert
> "7" and "C".
>
> 16#7#; -- 7
> 16#C#; -- 12
>
> To get 16#7C# from 16#7# and 16#C#, just do ((16#7# * 16) +
> 16#C#)
>
> To get 16#7# and 16#C#, first get '7' and 'C' from the string,
> you may do something like the following (providing your string
> is named S, and it is an ASCII string) :
>
> High_Order_Digit_Position : constant Positive := S'First;
> Low_Order_Digit_Position : constant Positive :=
> Positive'Succ
> (High_Order_Digit_Position);
> High_Order_Digit_Representation : constant Character := S
> (High_Order_Digit_Position);
> Low_Order_Digit_Representation : constant Character := S
> (Low_Order_Digit_Position);
>
> To get a digit Natural value from its Character representation,
> you may do something like the following (providing your
> character is stored in a Character named C) :
>
> case C is
> when '0' .. '9' =>
> Digit_Value := 0 + (Character'Pos (C) - Character'Pos
> ('0'));
> when 'A' .. 'F' =>
> Digit_Value := 10 + (Character'Pos (C) - Character'Pos
> ('A'));
> when 'a' .. 'f' =>
> Digit_Value := 10 + (Character'Pos (C) - Character'Pos
> ('a'));
> when others =>
> raise Program_Error;
> end case;
>
> Wrap the latter in a function like “ function
> Hexadecimal_Digit_Value (C : Character) return Natural; ”
>
> Then do :
>
> Hexadecimal_Base : constant Natural := 16;
> High_Order_Digit : constant Natural :=
> Hexadecimal_Digit_Value
> (High_Order_Digit_Representation);
> Low_Order_Digit : constant Natural :=
> Hexadecimal_Digit_Value
> (Low_Order_Digit_Representation);
> Number : constant Natural := (High_Order_Digit *
> Hexadecimal_Base)
> + Low_Order_Digit;
Okay, wait now; where did Hexadecimal_Digit_Value come
from? It should be declared outside of the function, and is
different than Decimal_Value, is that right?
Leslie
next prev parent reply other threads:[~2010-01-06 2:39 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-01-06 0:39 How to convert a string containing two hex digits to a character? Leslie
2010-01-06 0:43 ` Leslie
2010-01-06 1:22 ` Hibou57 (Yannick Duchêne)
2010-01-06 1:31 ` Hibou57 (Yannick Duchêne)
2010-01-06 2:05 ` Leslie
2010-01-06 2:39 ` Leslie [this message]
2010-01-06 2:42 ` Leslie
2010-01-06 21:54 ` Maciej Sobczak
2010-01-06 22:19 ` Hibou57 (Yannick Duchêne)
2010-01-09 10:50 ` Hibou57 (Yannick Duchêne)
2010-01-09 11:13 ` Hibou57 (Yannick Duchêne)
2010-01-09 11:33 ` Dmitry A. Kazakov
2010-01-09 14:50 ` Hibou57 (Yannick Duchêne)
2010-01-09 16:04 ` Dmitry A. Kazakov
2010-01-11 15:53 ` Adam Beneschan
2010-01-11 18:13 ` Dmitry A. Kazakov
2010-01-15 19:59 ` Hibou57 (Yannick Duchêne)
2010-01-15 22:06 ` John B. Matthews
2010-01-06 5:17 ` tmoran
2010-01-06 22:19 ` Leslie
2010-01-06 22:22 ` Hibou57 (Yannick Duchêne)
2010-01-07 14:26 ` John B. Matthews
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox