chr und Hex-Zahlen

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
Andreas Thul [ Mi, 21 Februar 2007 18:39 ] [ ID #1639128 ]

Re: chr und Hex-Zahlen

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
Frank Seitz [ Mi, 21 Februar 2007 18:53 ] [ ID #1639129 ]

Re: chr und Hex-Zahlen

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
Andreas Thul [ Mi, 21 Februar 2007 19:03 ] [ ID #1639130 ]

Re: chr und Hex-Zahlen

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.
Mirco Wahab [ Mi, 21 Februar 2007 19:01 ] [ ID #1639131 ]

Re: chr und Hex-Zahlen

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
Andreas Thul [ Mi, 21 Februar 2007 19:20 ] [ ID #1639132 ]

Re: chr und Hex-Zahlen

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 [at] adv.magwien.gv.at
Ferry Bolhar [ Do, 22 Februar 2007 10:59 ] [ ID #1639138 ]
Perl » de.comp.lang.perl.misc » chr und Hex-Zahlen

Vorheriges Thema: undefined subroutine
Nächstes Thema: Spreadsheet::ParseExcel ab 0.28 'broken'