468,512 Members | 1,382 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 468,512 developers. It's quick & easy.

convert unsigned to char

how to convert unsigned to char?

Ref: http://www.thescripts.com/forum/thread477545.html

how do I print without the leading ffffff (yet the result should be
char*)?
Dec 14 '07 #1
8 3530
AGRAJA wrote:
how to convert unsigned to char?

Ref: http://www.thescripts.com/forum/thread477545.html
Don't reference a webpage, ask us a question.
Dec 14 '07 #2
AGRAJA wrote:
>
how to convert unsigned to char?
int main (void)
{
unsigned u = 0;
char c = (char)u;

return 0;
}

--
pete
Dec 14 '07 #3
AGRAJA wrote:
how to convert unsigned to char?
Use the cast operator: (char)
Ref: http://www.thescripts.com/forum/thread477545.html

how do I print without the leading ffffff (yet the result should be
char*)?
Printing a pointer type requires the "%p" format specifier. On the
machines I use most often, getting lots of leading 'f's is pretty much
unavoidable when using %p with valid pointer values. However, are you
sure you want the result to be char*? In context, I'd have expected that
you wanted to print a char, not a char*.

If that's the case, then you should use either "%d" or "%u" format
specifier, depending upon whether or not char is signed (if CHAR_MIN <
0, then char is a signed type). Either way, you're absolutely guaranteed
to not get any 'f's in the output. :-)

However, I suspect that what you really want is to get no 'f's despite
using the "%x" specifier. On most implementations where 'char' is
unsigned, you're extremely unlikely to get leading f's when printing a
char value.

Therefore, I assume that you're using an implementation where 'char' is
signed. You still won't get many leading 'f's on most implementations,
unless the value you're converting to 'char' is greater than CHAR_MAX.
Don't do that! Performing such a conversion will either generate an
implementation-defined result, or cause an implementation-defined signal
to be raised. Either way, it's generally not a good thing to do. It's
likely to result in a negative number; if you convert that number to
unsigned, so that it can be printed using the "%x" format, then the
conversion will generally result in lots of leading 'f's.

I'd recommend using 'unsigned char' rather than 'char' for such purposes.
Dec 14 '07 #4
pete wrote:
AGRAJA wrote:
>how to convert unsigned to char?

int main (void) {
unsigned u = 0;
char c = (char)u;

return 0;
}
int main (void) {
unsigned u = 0;
char c;

c = u; /* provided that u value <= CHAR_MAX */
return 0;
}

No cast needed. The error also happens with a cast.

--
Chuck F (cbfalconer at maineline dot net)
<http://cbfalconer.home.att.net>
Try the download section.

--
Posted via a free Usenet account from http://www.teranews.com

Dec 14 '07 #5
James Kuyper <ja*********@verizon.netwrites:
AGRAJA wrote:
>how to convert unsigned to char?

Use the cast operator: (char)
A cast is neither necessary nor helpful. Just assign it; the
conversion is implicit.
>Ref: http://www.thescripts.com/forum/thread477545.html

how do I print without the leading ffffff (yet the result should be
char*)?

Printing a pointer type requires the "%p" format specifier. On the
machines I use most often, getting lots of leading 'f's is pretty much
unavoidable when using %p with valid pointer values. However, are you
sure you want the result to be char*? In context, I'd have expected
that you wanted to print a char, not a char*.
Neither the original post nor the cited web page mentions char* or
"%p".

[...]

--
Keith Thompson (The_Other_Keith) <ks***@mib.org>
Looking for software development work in the San Diego area.
"We must do something. This is something. Therefore, we must do this."
-- Antony Jay and Jonathan Lynn, "Yes Minister"
Dec 15 '07 #6
Keith Thompson wrote:
Neither the original post nor the cited web page mentions char* or
"%p".
The OP did indeed mention char* (and you quoted him):
>>how do I print without the leading ffffff (yet the result should be
char*)?
What he meant by this, I have no idea.

Phil
Dec 15 '07 #7
Keith Thompson wrote:
James Kuyper <ja*********@verizon.netwrites:
>AGRAJA wrote:
>>how to convert unsigned to char?
Use the cast operator: (char)

A cast is neither necessary nor helpful. Just assign it; the
conversion is implicit.
While that is true in an assignment context, the question as posed was
about conversion in general.
>>Ref: http://www.thescripts.com/forum/thread477545.html

how do I print without the leading ffffff (yet the result should be
char*)?
Printing a pointer type requires the "%p" format specifier. On the
machines I use most often, getting lots of leading 'f's is pretty much
unavoidable when using %p with valid pointer values. However, are you
sure you want the result to be char*? In context, I'd have expected
that you wanted to print a char, not a char*.

Neither the original post nor the cited web page mentions char* or
"%p".
???
"... (yet the result should be char*)?"

I don't know what the OP intended that to mean. The result of a
conversion to char is char, by definition. The result of a C expression
that prints something by calling printf() is a count of the characters
printed. The result, in a more informal sense, of printing something is
the appearance of a set of characters on the display device. I can't
figure out any meaning of "the result" which fits this context, for
which char* is the appropriate type.

However, since he DID mention char*, I decided to say something about
char*, even if what I said probably had nothing to do with what he
actually wanted. That was my (probably overly subtle) way of pointing
out to him that his comment about char* was unclear.

Dec 15 '07 #8
James Kuyper <ja*********@verizon.netwrites:
Keith Thompson wrote:
>James Kuyper <ja*********@verizon.netwrites:
>>AGRAJA wrote:
how to convert unsigned to char?
Use the cast operator: (char)

A cast is neither necessary nor helpful. Just assign it; the
conversion is implicit.

While that is true in an assignment context, the question as posed was
about conversion in general.
Yes, but in most cases conversion from one arithmetic type to another
doesn't require a cast.
>>>Ref: http://www.thescripts.com/forum/thread477545.html

how do I print without the leading ffffff (yet the result should be
char*)?
Printing a pointer type requires the "%p" format specifier. On the
machines I use most often, getting lots of leading 'f's is pretty much
unavoidable when using %p with valid pointer values. However, are you
sure you want the result to be char*? In context, I'd have expected
that you wanted to print a char, not a char*.

Neither the original post nor the cited web page mentions char* or
"%p".

???
"... (yet the result should be char*)?"
Whoops, I missed that. D'oh!
I don't know what the OP intended that to mean. The result of a
conversion to char is char, by definition. The result of a C
expression that prints something by calling printf() is a count of the
characters printed. The result, in a more informal sense, of printing
something is the appearance of a set of characters on the display
device. I can't figure out any meaning of "the result" which fits this
context, for which char* is the appropriate type.

However, since he DID mention char*, I decided to say something about
char*, even if what I said probably had nothing to do with what he
actually wanted. That was my (probably overly subtle) way of pointing
out to him that his comment about char* was unclear.
I suspect the OP wanted a string.

--
Keith Thompson (The_Other_Keith) <ks***@mib.org>
Looking for software development work in the San Diego area.
"We must do something. This is something. Therefore, we must do this."
-- Antony Jay and Jonathan Lynn, "Yes Minister"
Dec 15 '07 #9

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

3 posts views Thread by Siemel Naran | last post: by
13 posts views Thread by Bryan Parkoff | last post: by
65 posts views Thread by kyle.tk | last post: by
24 posts views Thread by cedarson | last post: by
10 posts views Thread by sposes | last post: by
14 posts views Thread by rtillmore | last post: by
reply views Thread by NPC403 | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.