how to use hex escape char with string in C?


 
Thread Tools Search this Thread
Top Forums Programming how to use hex escape char with string in C?
# 1  
Old 11-27-2010
how to use hex escape char with string in C?

I want it to ouput "abcd", but it dosen't.

Code:
  1 #include<stdio.h>
  2 int main()
  3 {
  4         printf("a\x62cd");
  5 }
  6

gcc alarm.c -o alarm
alarm.c: In function 'main':
alarm.c:4:9: warning: hex escape sequence out of range

It seems that the complier joint "cd" as part of \x62.
Maybe I can write it like this:
Code:
printf("a\x62""cd");

but it is a bit urgly...

Last edited by vistastar; 11-27-2010 at 01:28 AM..
# 2  
Old 11-27-2010
That's what I ended up having to do before. That, or seperating it out of the string entirely as in printf("a%ccd", 0x62);
# 3  
Old 11-27-2010
Why don't the complier just translates the fixed few of characters(eg: two char) after \x to an escape char?
# 4  
Old 11-29-2010
Why should it? There are systems where "char" isn't 8 bits... Or were, decades ago, and the C standard people latch onto this technicality like a bear trap and refuse to let go.

It plainly doesn't assume it stops at 8 bits, anyway, so the question's kind of pointless.
# 5  
Old 11-29-2010
Unicode characters aren't 8 bits, and they've been spotted in use somewhat more recently than decades ago.

The only way to produce a deterministic result when the number of output bits can not be constrained is with a maximal-munch parser.
# 6  
Old 11-30-2010
I tried your code with the same result as you. Then I just tried the following code:

Code:
  1 #include<stdio.h>
  2 int main()
  3 {
  4         printf("a\x62mn");
  5 }
  6

with the output:
Code:
#rob@fred:~/programs$./unixcom.exee
abmn
rob@fred:~/programs$

I think what is happening with your code is that the compiler is reading the \x62cd as one hex number - \xbcd. I would guess that Corona688's suggestion - printf("a%ccd", 0x62) - is your best bet.

HTH,

Rob.
# 7  
Old 11-30-2010
achenle - unicode or utf-16 or whatever else - have been around for a long time. They are not considered 'char' in C, they are wchar, wide characters, a different datatype. This datatype affects file orientation, which is the primary way reads & writes occur on tyy/file/device(s). wchar are NOT char, by definition and practice

try man wchar

And there still are embedded systems with 32 bit char.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Using sed to split hex string

Hi, I'm looking to split the following hex string into rows of four elements. I've tried the following but it doesn't seem to work. How can I tell sed to match based on a pair of number(s) and letter(s), and add a newline every 4 pairs? In addition, I need to add another newline after every... (5 Replies)
Discussion started by: sand1234
5 Replies

2. Shell Programming and Scripting

Find and increment value in string of hex

I have a long string of hex (from ASN.1 data) where I need to find and change a particular hex value only and increment it. The hex pairs either side (84 and a7) of the value to increment will remain constant. i.e. "84 <length> <value_to_increment> a7" starting with 00. So end result: ... (11 Replies)
Discussion started by: securegooner
11 Replies

3. Shell Programming and Scripting

String to HEX conversion in UNIX

i have this below string which i need to convert it to HEX. i have already tried it but it showing extra few things on it.. let me show what i have done and what is the output i am getting and what is the desired output the input string is "!\"\"\"\"\"\"\"!\"\"\"\"\"\"\"" which is... (4 Replies)
Discussion started by: vivek d r
4 Replies

4. Programming

Hex string conversion?

Hello all. I need help... How can I cenvert this 42ec93df826c804ea531c56594db453d54daad4b to normal text? What convertor I have to use? Thanks. (12 Replies)
Discussion started by: escudo
12 Replies

5. Shell Programming and Scripting

Match hex value in string (Perl)

I am trying to match a character return from a website so that I can replace it. It is the '...' character (didnt even know it existed initially). The character apparently has the hex value of 2026, but in the script, attempting to substitute regular 3 periods is not working. What am I... (2 Replies)
Discussion started by: Guyverix
2 Replies

6. Programming

After converting the hexstr to Hex and storing the Hex in a char*

Hi All, My main intension of is to convert the Hexstring stored in a char* into hex and then prefixing it with "0x" and suffix it with ',' This has to be done for all the hexstring char* is NULL. Store the result prefixed with "0x" and suffixed with ',' in another char* and pass it to... (1 Reply)
Discussion started by: rvan
1 Replies

7. Shell Programming and Scripting

sed escape char

Hi, For the following complex code , <!-- ... (2 Replies)
Discussion started by: fed.linuxgossip
2 Replies

8. UNIX for Dummies Questions & Answers

ANSI C, char to hex conversion

Hi, I have a char buf,ch; and the buf is filled with the result from MySQL server which I get like this numbytes = recv(sock, buf, 1024, 0));I have the followingcode to display the results printf("received %ld bytes:\n",numbytes); for(c=0;c<numbytes;c++){ ch = (char)buf; ... (2 Replies)
Discussion started by: alikims
2 Replies

9. Shell Programming and Scripting

Escape Char for double quote

Hi, what is the escape char for " in shell script. following way i want to write file using echo command echo "LOAD DATA infile '&1' APPEND INTO TABLE dummy_table FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' - single quote and double quote and single quote - gives error here... (1 Reply)
Discussion started by: navik_pathak
1 Replies

10. Programming

converting character string to hex string

HI Hi I have a character string which contains some special characters and I need it to display as a hex string. For example, the sample i/p string: ×¥ïA Å gïÛý and the o/p should be : D7A5EF4100C5010067EFDBFD Any pointers or sample code pls. (5 Replies)
Discussion started by: axes
5 Replies
Login or Register to Ask a Question