From: murphy@mips.COM (Mike Murphy)
Subject: Re: "Integer" value of a CHARACTER
Date: 29 Nov 90 20:52:14 GMT [thread overview]
Message-ID: <43658@mips.mips.COM> (raw)
In-Reply-To: 1990Nov28.210856.14960@sctc.com
In article <1990Nov28.210856.14960@sctc.com> stachour@sctc.com (Paul Stachour) writes:
>
> In the (simplified) example below, I am trying to get a hash-value
>from several characters in a string. However, I seem to get problems
>in doing this. In the example given, I get "constraint-error" on the
>attempt to do the "conversion". (V_Name is a 60-char string with an
>OK name in it, the first character is a "c".)
>
>-- ********************************************************** --
>function Hash_Name(
> The_Name : in V_Name )
> return Positive is
> C: STRING(1..1);
>begin
> C(1) := The_Name(1);
> return POSITIVE'VALUE(C(1..1));
>--1 return POSITIVE'VALUE(The_Name(1));
>end;
>-- ********************************************************** --
The type'VALUE(string) attribute returns the type-value that the
string image represents. Thus POSITIVE'VALUE("12") = 12,
while POSITIVE'VALUE("cat") raises constraint_error, because "cat"
is not the image of a positive number. To get a hash value,
you want to use the 'POS attribute, e.g.
CHARACTER'POS(The_Name(1)) = character'pos('c') = 99
To get a real hash value you probably want to do some arithmetic
on the 'pos values of more than one character in the string.
If you want to use unchecked_conversion, you could convert four
characters at a time to integer (assuming 4-byte integers), or
convert one character to a tiny_integer (or whatever 1-byte integer
your implementation defines):
function to_int is new unchecked_conversion (string, integer);
function to_tint is new unchecked_conversion (character, tiny_integer);
integer_obj := to_int(The_Name(1..4));
tiny_integer_obj := to_tint(The_Name(1));
-- this is essentially the same as doing a 'pos.
prev parent reply other threads:[~1990-11-29 20:52 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
1990-11-28 21:08 "Integer" value of a CHARACTER Paul Stachour
1990-11-29 20:52 ` Mike Murphy [this message]
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox