Sponsored Content
Full Discussion: Number to bit vector
Top Forums Programming Number to bit vector Post 302967319 by migurus on Monday 22nd of February 2016 04:36:20 PM
Old 02-22-2016
I used this function for ages, don't even remember its origin:

Code:
char *conv_to_zeroes_ones(void *in)
{
  register int  i, pos;
  unsigned int  *input;
  char          bit;
  char          buf[256];
         input = (unsigned int *)in;
        memset(buf, 0, 256);
        pos = 0;
         for(i = 31; i >= 0; i--)
        {
                if(((*input >> i) & 1))
                        bit = '1';
                else
                        bit = '0';
                buf[pos++] = bit;
                if((i > 0) && (i % 4) == 0)
                {
                        if((i % 8) == 0)
                        {
                                buf[pos++] = ' ';
                                buf[pos++] = ':';
                                buf[pos++] = ' ';
                        }
                        else
                        {
                                buf[pos++] = ' ';
                        }
                }
        }
        return buf;
}

the result looks like this:

Code:
 
 $ bits 1234
    1234 = 0000 0000 : 0000 0000 : 0000 0100 : 1101 0010

This User Gave Thanks to migurus For This Post:
 

6 More Discussions You Might Find Interesting

1. Programming

copying or concatinating string from 1st bit, leaving 0th bit

Hello, If i have 2 strings str1 and str2, i would like to copy/concatenate str2 to str1, from 1st bit leaving the 0th bit. How do i do it? (2 Replies)
Discussion started by: jazz
2 Replies

2. Shell Programming and Scripting

Help needed in converting number to bit

Hi, I have the following file input:- 542 4795 61 543 4795 61 544 0 0 545 292 ... (5 Replies)
Discussion started by: ahjiefreak
5 Replies

3. Programming

Help with bit vector and setting its bits?

void shuffle (card_t cards, card_t cards2, char *bitvec) { int i; unsigned char temp, r; srand(time(NULL)); for (i = 0; i < 52; i++) { r = rand() % 52; temp = bitvec; if (!(temp & (1 << (8- (r % 8))))) { temp |= (1 << (8- (r % 8)));------->is this my problem? } } } ok so I am... (1 Reply)
Discussion started by: bjhum33
1 Replies

4. Shell Programming and Scripting

How to handle 64 bit arithmetic operation at 32 bit compiled perl interpreter?H

Hi, Here is the issue. From the program snippet I have Base: 0x1800000000, Size: 0x3FFE7FFFFFFFF which are of 40 and 56 bits. SO I used use bignum to do the math but summing them up I always failed having correct result. perl interpreter info, perl, v5.8.8 built for... (0 Replies)
Discussion started by: rrd1986
0 Replies

5. Programming

How bit representation of a number can be done in c?

I have an assignment in which a character is the input of which some bits(from a position to certain position) are to be inverted (1's complement) and then the resultant character is to be returned....for example unsigned char x = J from p = 3 to offset n = 5 01001010 inverted to... (1 Reply)
Discussion started by: ezee
1 Replies

6. Windows & DOS: Issues & Discussions

Which version of Windows Vista to install with a product key? 32-bit or 64-bit?

Hello everyone. I bought a dell laptop (XPS M1330) online which came without a hard drive. There is a Windows Vista Ultimate OEMAct sticker with product key at the bottom case. I checked dell website (here) for this model and it says this model supports both 32 and 64-bit version of Windows... (4 Replies)
Discussion started by: milhan
4 Replies
HUMANIZE_NUMBER(9)					   BSD Kernel Developer's Manual					HUMANIZE_NUMBER(9)

NAME
humanize_number, format_bytes -- human readable numbers SYNOPSIS
int humanize_number(char *buf, size_t len, uint64_t number, const char *suffix, int divisor); int format_bytes(char *buf, size_t len, uint64_t number); DESCRIPTION
The humanize_number() function formats the unsigned 64-bit quantity given in number into buf. A space and then suffix is appended to the end. The supplied buf must be at least len bytes long. If the formatted number (including suffix) is too long to fit into buf, humanize_number() divides number by divisor until it will fit. In this case, suffix is prefixed with the appropriate SI designator. Suitable values of divisor are 1024 or 1000 to remain consistent with the common meanings of the SI designator prefixes. The prefixes are: Prefix Description Multiplier k kilo 1024 M mega 1048576 G giga 1073741824 T tera 1099511627776 P peta 1125899906842624 E exa 1152921504606846976 The len argument must be at least 4 plus the length of suffix, in order to ensure a useful result in buf. The format_bytes() function is a front-end to humanize_number(). It calls the latter with a suffix of ``B''. Also, if the suffix in the returned buf would not have a prefix, the suffix is removed. This means that a result of ``100000'' occurs, instead of ``100000 B''. RETURN VALUES
Both functions return the number of characters stored in buf (excluding the terminating NUL) upon success, or -1 upon failure. SEE ALSO
humanize_number(3) HISTORY
These functions first appeared in NetBSD 1.5. BSD
August 7, 2010 BSD
All times are GMT -4. The time now is 10:15 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy