#!/usr/bin/perl my $decimal=-33; #How to generate: #$decimal - your Perl variable. MUST be: -127<$decimal<127 my $packed=pack("N",$decimal); # Little-endian 4 byte. my $YOUR8BITVALUE=substr($packed,-1); # last byte from $packed open F,">your_test_file"; print F $YOUR8BITVALUE; close F; # Now you have file with your $decimal # as one byte in "two's complement"; # How to get from file: open F, "<your_test_file"; read(F,$packed,1); #read byte; my $value; # result if (unpack("N","\x00\x00\x00".$packed) & (1<<7)) { # sign bit is set. It's negative value $packed=("\xFF\xFF\xFF").$packed; # expand to int with 3 byte of 0xF +F $value=-(unpack("N",~$packed)+1); # inverse all bits and unpack,incr +ement,reverse sign. } else { $packed=("\x00\x00\x00").$packed; # expand to int $value=unpack("N",$packed); unpack } print "$value\n"; # That's all!
In reply to Re: How do I convert from decimal to 2's Complement
by Anonymous Monk
in thread How do I convert from decimal to 2's Complement
by kevin8
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |