Solved

convert signed int to unsigned int

Posted on 2006-06-28
2,974 Views
Last Modified: 2010-08-05
Hey Experts,
How do I convert a number represented as a string from a text box to unsigned. For example, the number in the text box is -492961707.
0
Question by:freename
8 Comments

LVL 25

Expert Comment

ID: 17004924
Do you want to convert it to 492961707 or the unsigned equivalent (base-2 inverse)?
0

LVL 142

Expert Comment

ID: 17004931

int n = int.Parse(textbox.text)
uint u = unchecked(n < 0 ? -n : n);
0

LVL 25

Expert Comment

ID: 17004994
Depending on if you want the 32-bit equivalent or 64-bit equivalent,

try
Int64 i = -492961707;
String s = i.ToString("x");
u = UInt64.Parse(s, System.Globalization.NumberStyles.AllowHexSpecifier);

or

Int32 i = -492961707;
String s = i.ToString("x");
u = UInt32.Parse(s, System.Globalization.NumberStyles.AllowHexSpecifier);
0

LVL 25

Expert Comment

ID: 17005014
Angel,

Very slick!  But wouldn't it just be

int n = int.Parse(textbox.text)
uint u = (uint)unchecked(n);
0

LVL 37

Expert Comment

ID: 17007835
dstanley don't be too impressed it is googled :) from http://www.flounder.com/csharpfactoids.htm

Generally one should use Math.Abs ... there is 1 number it will fail for -2147483648 (due to overflow) which is why the unchecked solution posted is mentioned ... if this one number doesn't matter to you then it is a much cleaner answer and does a better job expressing what you are trying to do.

int n = int.Parse(textbox.text)
uint foo = (uint) math.abs(value)

Cheers,

Greg
0

LVL 142

Expert Comment

ID: 17007878
>don't be too impressed it is googled
I admit to be culprit on that point :-)
0

Author Comment

ID: 17008738
Everyone,
I see some very good solutions here. But I don't think I was clear enough on my original request. My apologies. From what I understand (I'm getting this information second hand),  the number originates on a system that uses unsigned numbers. Then it is delivered (the means is unimportant) to a system that has signed numbers. Therefore, when represented on the new system, the negative sign may be present, as in this case, because the signed bit is set. I would like to know what the original number was on the system the uses unsigned numbers. Is this possible?
0

LVL 25

Accepted Solution

dstanley9 earned 100 total points
ID: 17009439
It depends on how many bits were used to represent the number on the original system.  The negation of an unsigned int will be different for each:

uint ui = (uint)unchecked(i);  // returns 3802005589 (0xe29e0055)
ulong ul = (ulong)unchecked(i);  // returns 18446744073216589909  (0xffffffffe29e0055)

If the code represents some type of 32-bit structure with a combination of flags and numbers, it is probably a 32-bit code based on your example.  COM errors, for example, are translated to negative 32-bit signed integers becuase the leftmost bit is always 1 for errors to indicate a failure (http://windowssdk.msdn.microsoft.com/en-us/library/97e68708-eb62-4481-af03-cf8b80304103.aspx).

0

Join & Write a Comment Already a member? Login.

In order to hide the "ugly" records selectors (triangles) in the rowheaders, here are some suggestions. Microsoft doesn't have a direct method/property to do it. You can only hide the rowheader column. First solution, the easy way The first solâ€¦
This article is for Object-Oriented Programming (OOP) beginners. An Interface contains declarations of events, indexers, methods and/or properties. Any class which implements the Interface should provide the concrete implementation for each Interâ€¦
This demo shows you how to set up the containerized NetScaler CPX with NetScaler Management and Analytics System in a non-routable Mesos/Marathon environment for use with Micro-Services applications.
When you create an app prototype with Adobe XD, you can insert system screens -- sharing or Control Center, for example -- with just a few clicks. This video shows you how. You can take the full course on Experts Exchange at http://bit.ly/XDcourse.

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

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

Need Help in Real-Time?

Connect with top rated Experts

12 Experts available now in Live!