chr und Hex-Zahlen
am 21.02.2007 18:39:39 von Andreas Thul
Hallo allerseits,
irgendwie stehe ich im Moment auf dem Schlauch.
Wenn ich das kleine Beispielskript starte, funktionieren die Ausgaben in den
Zeilen 4 und 7 wie gewünscht, in Zeile 10 hingegen kommt ein 'Argument
"0x32" isn't numeric'.
---schnipp---
use strict;
use warnings;
print chr(0x32);
my $buffer='50';
print chr($buffer);
$buffer='0x32';
print chr($buffer);
---schnipp---
Was muß ich tun, damit's auch so klappt?
Vielen Dank im Voraus,
-andreas thul
Re: chr und Hex-Zahlen
am 21.02.2007 18:53:19 von Frank Seitz
Andreas Thul wrote:
> $buffer='0x32';
^^^^^^ das ist ein String, keine Zahl
> print chr($buffer);
>
> ---schnipp---
>
> Was muß ich tun, damit's auch so klappt?
Grüße
Frank
--
Dipl.-Inform. Frank Seitz; http://www.fseitz.de/
Anwendungen für Ihr Internet und Intranet
Tel: 04103/180301; Fax: -02; Industriestr. 31, 22880 Wedel
Re: chr und Hex-Zahlen
am 21.02.2007 19:01:29 von Mirco Wahab
Andreas Thul wrote:
> print chr(0x32);
0x32 => "numeric literal"
> $buffer='0x32';
> print chr($buffer);
'0x32' => "string literal"
> Was muß ich tun, damit's auch so klappt?
$buffer='0x32';
print chr( hex $buffer );
Viele Grüße
M.
Re: chr und Hex-Zahlen
am 21.02.2007 19:03:42 von Andreas Thul
Hallo Frank,
On 21.02.2007 18:53, Frank Seitz wrote:
> Andreas Thul wrote:
>
>> $buffer='0x32';
> ^^^^^^ das ist ein String, keine Zahl
Das ist mir schon klar - aber wie kriege ich den Hex-Wert wieder so
umgebastelt, daß ihn chr schluckt?
Grüße,
-andreas thul
Re: chr und Hex-Zahlen
am 21.02.2007 19:20:09 von Andreas Thul
Hallo M.,
On 21.02.2007 19:01, Mirco Wahab wrote:
> $buffer='0x32';
> print chr( hex $buffer );
Jetzt, wo ich's sehe, liest es sich irgendwie logisch :)
Danke!
-andreas thul
Re: chr und Hex-Zahlen
am 22.02.2007 10:59:39 von Ferry Bolhar
Mirco Wahab:
> $buffer='0x32';
> print chr( hex $buffer );
Warum so umständlich? _Numerische_ hex-Literale sind ja nicht
verboten. Also:
$buffer = 0x32; # Numerisch, kein String!
print chr($buffer);
Das Problem war ja nicht die hexadezimale Schreibweise, sondern
die Schreibweise als Stringliteral. Die implizite Umwandlung eines
Stringliterals, das einen numerischen Wert darstellt, in eine Zahl
führt Perl nur bei Dezimalwerten durch (schließlich könnte '0x32'
ja auch tatsächlich als String verwendet werden, und da wäre
dann eine automatische Umwandlung in '50' möglicherweise nicht
ganz erwünscht :-).
LG, Ferry
--
Ing Ferry Bolhar
Magistrat der Stadt Wien - MA 14
A-1010 Wien
E-Mail: bol@adv.magwien.gv.at