Mercurial > hg > octave-nkf
annotate scripts/strings/bin2dec.m @ 19022:5eca3080c7cd
maint: Merge Stefan's changesets onto default after verification.
author | Rik <rik@octave.org> |
---|---|
date | Sat, 14 Jun 2014 13:24:46 -0700 |
parents | d63878346099 |
children | 4197fc428c7d |
rev | line source |
---|---|
17744
d63878346099
maint: Update copyright notices for release.
John W. Eaton <jwe@octave.org>
parents:
14868
diff
changeset
|
1 ## Copyright (C) 1996-2013 Daniel Calvelo |
2325 | 2 ## |
2313 | 3 ## This file is part of Octave. |
4 ## | |
5 ## Octave is free software; you can redistribute it and/or modify it | |
6 ## under the terms of the GNU General Public License as published by | |
7016 | 7 ## the Free Software Foundation; either version 3 of the License, or (at |
8 ## your option) any later version. | |
2313 | 9 ## |
10 ## Octave is distributed in the hope that it will be useful, but | |
11 ## WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 ## General Public License for more details. | |
14 ## | |
15 ## You should have received a copy of the GNU General Public License | |
7016 | 16 ## along with Octave; see the file COPYING. If not, see |
17 ## <http://www.gnu.org/licenses/>. | |
2268 | 18 |
3446 | 19 ## -*- texinfo -*- |
5666 | 20 ## @deftypefn {Function File} {} bin2dec (@var{s}) |
11172
7e8ce65f73cf
Overhaul functions used to convert between number bases.
Rik <octave@nomad.inbox5.com>
parents:
10821
diff
changeset
|
21 ## Return the decimal number corresponding to the binary number represented |
7e8ce65f73cf
Overhaul functions used to convert between number bases.
Rik <octave@nomad.inbox5.com>
parents:
10821
diff
changeset
|
22 ## by the string @var{s}. For example: |
2311 | 23 ## |
3446 | 24 ## @example |
9051
1bf0ce0930be
Grammar check TexInfo in all .m files
Rik <rdrider0-list@yahoo.com>
parents:
8920
diff
changeset
|
25 ## @group |
5666 | 26 ## bin2dec ("1110") |
3446 | 27 ## @result{} 14 |
9051
1bf0ce0930be
Grammar check TexInfo in all .m files
Rik <rdrider0-list@yahoo.com>
parents:
8920
diff
changeset
|
28 ## @end group |
3446 | 29 ## @end example |
3789 | 30 ## |
14478
e995b1c97e13
Fix regression in bin2dec which did not allow space-separated input.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
31 ## Spaces are ignored during conversion and may be used to make the binary |
e995b1c97e13
Fix regression in bin2dec which did not allow space-separated input.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
32 ## number more readable. |
e995b1c97e13
Fix regression in bin2dec which did not allow space-separated input.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
33 ## |
e995b1c97e13
Fix regression in bin2dec which did not allow space-separated input.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
34 ## @example |
e995b1c97e13
Fix regression in bin2dec which did not allow space-separated input.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
35 ## @group |
e995b1c97e13
Fix regression in bin2dec which did not allow space-separated input.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
36 ## bin2dec ("1000 0001") |
e995b1c97e13
Fix regression in bin2dec which did not allow space-separated input.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
37 ## @result{} 129 |
e995b1c97e13
Fix regression in bin2dec which did not allow space-separated input.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
38 ## @end group |
e995b1c97e13
Fix regression in bin2dec which did not allow space-separated input.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
39 ## @end example |
e995b1c97e13
Fix regression in bin2dec which did not allow space-separated input.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
40 ## |
13164
36afcd6fc45f
Allow cellstr inputs to *2dec conversion functions (Bug #34147).
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
41 ## If @var{s} is a string matrix, return a column vector with one converted |
36afcd6fc45f
Allow cellstr inputs to *2dec conversion functions (Bug #34147).
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
42 ## number per row of @var{s}; Invalid rows evaluate to NaN@. |
36afcd6fc45f
Allow cellstr inputs to *2dec conversion functions (Bug #34147).
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
43 ## |
36afcd6fc45f
Allow cellstr inputs to *2dec conversion functions (Bug #34147).
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
44 ## If @var{s} is a cell array of strings, return a column vector with one |
36afcd6fc45f
Allow cellstr inputs to *2dec conversion functions (Bug #34147).
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
45 ## converted number per cell element in @var{s}. |
11172
7e8ce65f73cf
Overhaul functions used to convert between number bases.
Rik <octave@nomad.inbox5.com>
parents:
10821
diff
changeset
|
46 ## @seealso{dec2bin, base2dec, hex2dec} |
3446 | 47 ## @end deftypefn |
2311 | 48 |
3791 | 49 ## Author: Daniel Calvelo <dcalvelo@yahoo.com> |
3789 | 50 ## Adapted-by: Paul Kienzle <pkienzle@kienzle.powernet.co.uk> |
2314 | 51 |
11172
7e8ce65f73cf
Overhaul functions used to convert between number bases.
Rik <octave@nomad.inbox5.com>
parents:
10821
diff
changeset
|
52 function d = bin2dec (s) |
2268 | 53 |
13164
36afcd6fc45f
Allow cellstr inputs to *2dec conversion functions (Bug #34147).
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
54 if (nargin != 1) |
5924 | 55 print_usage (); |
2268 | 56 endif |
2325 | 57 |
13164
36afcd6fc45f
Allow cellstr inputs to *2dec conversion functions (Bug #34147).
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
58 d = base2dec (s, 2); |
36afcd6fc45f
Allow cellstr inputs to *2dec conversion functions (Bug #34147).
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
59 |
2268 | 60 endfunction |
7411 | 61 |
13164
36afcd6fc45f
Allow cellstr inputs to *2dec conversion functions (Bug #34147).
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
62 |
14868
5d3a684236b0
maint: Use Octave coding conventions for cuddling parentheses in scripts directory
Rik <octave@nomad.inbox5.com>
parents:
14491
diff
changeset
|
63 %!assert (bin2dec ("0000"), 0) |
5d3a684236b0
maint: Use Octave coding conventions for cuddling parentheses in scripts directory
Rik <octave@nomad.inbox5.com>
parents:
14491
diff
changeset
|
64 %!assert (bin2dec ("1110"), 14) |
5d3a684236b0
maint: Use Octave coding conventions for cuddling parentheses in scripts directory
Rik <octave@nomad.inbox5.com>
parents:
14491
diff
changeset
|
65 %!assert (bin2dec ("11111111111111111111111111111111111111111111111111111"), 2^53-1) |
5d3a684236b0
maint: Use Octave coding conventions for cuddling parentheses in scripts directory
Rik <octave@nomad.inbox5.com>
parents:
14491
diff
changeset
|
66 %!assert (bin2dec ({"1110", "1111"}), [14; 15]) |
14478
e995b1c97e13
Fix regression in bin2dec which did not allow space-separated input.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
67 %!assert (bin2dec ("1 0 1"), 5) |
14491
5bd9e47e9277
maint: periodic merge of stable to default
Jordi Gutiérrez Hermoso <jordigh@octave.org>
diff
changeset
|
68 %!assert (bin2dec (char ("1 0 1", " 1111")), [5; 15]) |
7411 | 69 |
11172
7e8ce65f73cf
Overhaul functions used to convert between number bases.
Rik <octave@nomad.inbox5.com>
parents:
10821
diff
changeset
|
70 %%Test input validation |
14363
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
71 %!error bin2dec () |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
72 %!error bin2dec (1) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
73 %!error bin2dec ("1", 2) |
7411 | 74 |