mirror of
https://github.com/msgpack/msgpack-c.git
synced 2025-10-22 16:02:30 +02:00
modified begin process about byte order
This commit is contained in:
@@ -25,19 +25,19 @@ BEGIN {
|
|||||||
# require $Config{byteorder}; my $bo_is_le = ( $Config{byteorder} =~ /^1234/ );
|
# require $Config{byteorder}; my $bo_is_le = ( $Config{byteorder} =~ /^1234/ );
|
||||||
# which better?
|
# which better?
|
||||||
my $bo_is_le = unpack ( 'd', "\x00\x00\x00\x00\x00\x00\xf0\x3f") == 1; # 1.0LE
|
my $bo_is_le = unpack ( 'd', "\x00\x00\x00\x00\x00\x00\xf0\x3f") == 1; # 1.0LE
|
||||||
# In really, since 5.9.2 '>' is introduced.
|
# In really, since 5.9.2 '>' is introduced. but 'n!' and 'N!'?
|
||||||
*pack_uint64 = $bo_is_le ? sub {
|
*pack_uint64 = $bo_is_le ? sub {
|
||||||
my @v = unpack( 'V2', pack( 'Q', $_[0] ) );
|
my @v = unpack( 'V2', pack( 'Q', $_[0] ) );
|
||||||
return pack 'CN2', 0xcf, @v[1,0];
|
return pack 'CN2', 0xcf, @v[1,0];
|
||||||
} : sub { pack 'CQ', 0xcf, $_[0]; };
|
} : sub { pack 'CQ', 0xcf, $_[0]; };
|
||||||
*pack_int64 = $bo_is_le ? sub {
|
*pack_int64 = $bo_is_le ? sub {
|
||||||
my @v = unpack( 'V2', pack( 'q', $_[0] ) );
|
my @v = unpack( 'V2', pack( 'q', $_[0] ) );
|
||||||
return pack 'CN2', 0xd3, @v[1,0];
|
return pack 'CN2', 0xd3, @v[1,0];
|
||||||
} : sub { pack 'Cq', 0xd3, $_[0]; };
|
} : sub { pack 'Cq', 0xd3, $_[0]; };
|
||||||
*pack_double = $bo_is_le ? sub {
|
*pack_double = $bo_is_le ? sub {
|
||||||
my @v = unpack( 'V2', pack( 'd', $_[0] ) );
|
my @v = unpack( 'V2', pack( 'd', $_[0] ) );
|
||||||
return pack 'CN2', 0xcb, @v[1,0];
|
return pack 'CN2', 0xcb, @v[1,0];
|
||||||
} : sub { pack 'Cd', 0xcb, $_[0]; };
|
} : sub { pack 'Cd', 0xcb, $_[0]; };
|
||||||
*unpack_float = $bo_is_le ? sub {
|
*unpack_float = $bo_is_le ? sub {
|
||||||
my @v = unpack( 'v2', substr( $_[0], $_[1], 4 ) );
|
my @v = unpack( 'v2', substr( $_[0], $_[1], 4 ) );
|
||||||
return unpack( 'f', pack( 'n2', @v[1,0] ) );
|
return unpack( 'f', pack( 'n2', @v[1,0] ) );
|
||||||
@@ -55,14 +55,14 @@ BEGIN {
|
|||||||
my $v = unpack 'N', substr( $_[0], $_[1], 4 );
|
my $v = unpack 'N', substr( $_[0], $_[1], 4 );
|
||||||
return $v ? $v - 0x100000000 : 0;
|
return $v ? $v - 0x100000000 : 0;
|
||||||
};
|
};
|
||||||
*unpack_int64 = sub {
|
*unpack_int64 = $bo_is_le ? sub {
|
||||||
my @v = unpack( 'V*', substr( $_[0], $_[1], 8 ) );
|
my @v = unpack( 'V*', substr( $_[0], $_[1], 8 ) );
|
||||||
return unpack( 'q', pack( 'N2', @v[1,0] ) );
|
return unpack( 'q', pack( 'N2', @v[1,0] ) );
|
||||||
};
|
} : sub { pack 'q', substr( $_[0], $_[1], 8 ); };
|
||||||
*unpack_uint64 = sub {
|
*unpack_uint64 = $bo_is_le ? sub {
|
||||||
my @v = unpack( 'V*', substr( $_[0], $_[1], 8 ) );
|
my @v = unpack( 'V*', substr( $_[0], $_[1], 8 ) );
|
||||||
return unpack( 'Q', pack( 'N2', @v[1,0] ) );
|
return unpack( 'Q', pack( 'N2', @v[1,0] ) );
|
||||||
};
|
} : sub { pack 'Q', substr( $_[0], $_[1], 8 ); };
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
*pack_uint64 = sub { return pack 'CQ>', 0xcf, $_[0]; };
|
*pack_uint64 = sub { return pack 'CQ>', 0xcf, $_[0]; };
|
||||||
|
Reference in New Issue
Block a user