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:42:44 -0600
Date: 2010-01-05T20:42:44-06:00 [thread overview]
Message-ID: <hi0t9b$nub$2@news.albasani.net> (raw)
In-Reply-To: hi0t2b$nub$1@news.albasani.net
Leslie wrote:
> 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?
>
Gak! Never mind, that's the function call. :-p
> Leslie
next prev parent reply other threads:[~2010-01-06 2:42 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
2010-01-06 2:42 ` Leslie [this message]
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