?
Solved

Unsigned Long Int to Byte?

Posted on 2009-05-03
6
Medium Priority
?
767 Views
Last Modified: 2013-11-05
Hi, I have an unsigned long int number (only 0 and 1) and I would like to take the first 8 digits and put them in a byte. Example:

unsigned long int code = 01100011001110;   //13 digits

char byte = ---8 first digits from code---

---remove the 8 first digits from code and place the rest of them at the beggining---

printf("%ld", code);  //this will printf "001110"  (the last 6 digits)

Thanks
0
Comment
Question by:AL3X2
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
  • 2
6 Comments
 
LVL 40

Expert Comment

by:evilrix
ID: 24291041
You mean, like this?
#include <stdio.h>
 
int main(int argc, char **argv)
{
	unsigned long ul = 0x18CE; // 01100011001110
	unsigned char uc = static_cast<unsigned char>(ul >> 6);
	
	printf("0x%04X\n", uc); // 01100011 (0x0063)
	printf("0x%04X\n", (ul & 0x3F)); // 001110 (0x000E)
}

Open in new window

0
 
LVL 40

Accepted Solution

by:
evilrix earned 200 total points
ID: 24291046
Sorry, same thing with a C and not C++ style cast :)
#include <stdio.h>
 
int main(int argc, char **argv)
{
	unsigned long ul = 0x18CE; // 01100011001110
	unsigned char uc = (unsigned char)(ul >> 6);
	
	printf("0x%04X\n", uc); // 01100011 (0x0063)
	printf("0x%04X\n", (ul & 0x3F)); // 001110 (0x000E)
}

Open in new window

0
 

Author Comment

by:AL3X2
ID: 24291061
Thanks for the fast reply!

But, this will work only when ul is 13 digits?
0
VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

 

Author Comment

by:AL3X2
ID: 24291074
Nevermind, I think I found it ;)


Just one more thing.

If i have ul = 1001 (for example), how can I add digits ?

something like  ul = ul + 100, so printf("%ld", ul) will show "1001100" ?
0
 
LVL 40

Expert Comment

by:evilrix
ID: 24291075
>> But, this will work only when ul is 13 digits?
It is specific to the requires you stated. Line 6 cuts off the fist 6 bytes of the UL using the right shift operator and casts the return into a char and the result is printed at line 8.

01100011001110 >> 6 == 01100011

Line 9 uses the mask 111111 to ignore all but the first 6 bits of the UL

01100011001110 & 111111 == 001110

Once you understand how these 2 operations work you can tailor them to various needs.


0
 
LVL 40

Expert Comment

by:evilrix
ID: 24291090
>> If i have ul = 1001 (for example), how can I add digits ?
>> something like  ul = ul + 100, so printf("%ld", ul) will show "1001100" ?

Read up on the << and >>  and the & and | bitwise C operators

http://www.cplusplus.com/doc/tutorial/operators/


#include <stdio.h>
 
int main(int argc, char **argv)
{
	unsigned long ul = 0x09; // 1001
	ul <<= 3; // 1001000
	ul |= 4; // 1001100
 
	printf("0x%04X\n", ul); // 1001100 (0x4C)
}

Open in new window

0

Featured Post

VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

An Outlet in Cocoa is a persistent reference to a GUI control; it connects a property (a variable) to a control.  For example, it is common to create an Outlet for the text field GUI control and change the text that appears in this field via that Ou…
Summary: This tutorial covers some basics of pointer, pointer arithmetic and function pointer. What is a pointer: A pointer is a variable which holds an address. This address might be address of another variable/address of devices/address of fu…
The goal of this video is to provide viewers with basic examples to understand and use pointers in the C programming language.
Video by: Grant
The goal of this video is to provide viewers with basic examples to understand and use for-loops in the C programming language.
Suggested Courses
Course of the Month12 days, 13 hours left to enroll

777 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question