Hello
how would i go about converting a string value to HEX
ie
char name[10]="STEPHEN";
Convert name to HEX
Hello
how would i go about converting a string value to HEX
ie
char name[10]="STEPHEN";
Convert name to HEX
Jump to PostHow would i be able to let the user enter HEX and convert it into string?
ie
User Enters 4c3258
and displays L2XPerhaps something like this.
#include <stdio.h> int main(void) { char name[10] = "4c3258", *ptr = name; int i; while ( sscanf(ptr, "%2x", &i) == …
Jump to PostSet up a loop that takes 2 characters at a time, convert those 2 characters to a hex value, and output as a character.
Didn't I do that -- and in a standard and simpler way?
:p
Jump to Post????
You have my vote for the most useless post of the year.
Jump to PostNull terminate converted_string to use it correctly with
strcpy
.
Jump to PostOkay, i have now NULL termainted my converted_string, but this still does not work, any help?
Well, it does work, even though you did this
converted_string[k]=NULL;
instead of this
converted_string[k]='\0'; /* null terminate */
So I guess you'd have to provide more context.
Do …
You can pass character by character to itoa with radix 16.
If you only want to display the hex values, you can use printf with format specifiers %x or %X.
I understand how to use the itoa function, but this radix 16?
Regards
If you use the radix 10, you will get a string of the an integer in base 10.
For radix 16, you will get a hexadecimal string.
You can try the example in the given web page or the one below.
e.g
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
char name[10]="stephen";
char buffer[21]="";
char *pbuffer = buffer;
int len = strlen( name );
for( int i = 0; i < len ;i++ )
{
itoa (name[i],pbuffer,16);
pbuffer +=2;
};
printf( "%s\n", buffer );
return 0;
}
When i try to compile, i get this
> gcc string_to_hex.c
Undefined first referenced
symbol in file
itoa /tmp/cc21JKaJ.o
ld: fatal: Symbol referencing errors. No output written to a.out
collect2: ld returned 1 exit status
Looks like a linker error. Do you have this problem for my example only or for the example given in the link I posted also?
Looks like a linker error. Do you have this problem for my example only or for the example given in the link I posted also?
I cant see no given web page, but i changed the code a little to make it as simple as possible with the same error
When i try to compile, i get this
> gcc string_to_hex.c
Undefined first referenced
symbol in file
itoa /tmp/cc21JKaJ.o
ld: fatal: Symbol referencing errors. No output written to a.out
collect2: ld returned 1 exit status
Yes of course itoa is nonstandard. U can implement your own itoa
http://www.daniweb.com/techtalkforums/showthread.php?t=11049&highlight=itoa
or use this code
#include <stdio.h>
#include <string.h>
int main()
{
char name[10]="STEPHEN";
char buffer[21]="";
char *pbuffer = buffer;
int len = strlen( name );
int i;
for(i = 0; i < len ;i++ )
{
sprintf(pbuffer, "%x", name[i]);
pbuffer +=2;
}
printf( "%s\n", buffer );
return 0;
}
Compiled with gcc
What are you guys taking about? The original request is:
how would i go about converting a string value to HEX
ie
char name[10]="STEPHEN";Convert name to HEX
What does this mean?
1) "STEPHEN" is not a number so it can't be converted to Hex
or
2) "STEPHEN" is a string of characters that each have a Hex value. Do you mean add these characters to get a value?
Maybe an actual example would be in order. After the conversion, what should the Hex value of "STEPHEN" be?
How would i be able to let the user enter HEX and convert it into string?
ie
User Enters 4c3258
and displays L2X
How would i be able to let the user enter HEX and convert it into string?
ie
User Enters 4c3258
and displays L2X
#include <stdio.h>
int main()
{
int hex;
printf("Enter hex: ");
scanf("%x", &hex);
printf("%c", (char) ((hex & 0xFF000000) >> 24));
printf("%c", (char) ((hex & 0xFF0000) >> 16));
printf("%c", (char) ((hex & 0xFF00) >> 8));
printf("%c", (char) (hex & 0xFF));
return 0;
}
How could i use this in a loop, i cant get it to work
The string the user enters has to start as a character string
How would i be able to let the user enter HEX and convert it into string?
ie
User Enters 4c3258
and displays L2X
Perhaps something like this.
#include <stdio.h>
int main(void)
{
char name[10] = "4c3258", *ptr = name;
int i;
while ( sscanf(ptr, "%2x", &i) == 1 )
{
putchar(i);
ptr += 2;
}
putchar('\n');
return 0;
}
/* my output
L2X
*/
Set up a loop that takes 2 characters at a time, convert those 2 characters to a hex value, and output as a character.
To convert 2 chars to hex:
subtract '0' from first giving X. It's now binary.
if X > 9, subract 7 -- it's now hex.
Do the same with 2nd character, making Y
HEX = (X << 4) | Y which shifts the second 'digit' X by 4 bits (multiply by 16), then adds in the first 'digit'
putchar(HEX) outputs the character.
Set up a loop that takes 2 characters at a time, convert those 2 characters to a hex value, and output as a character.
Didn't I do that -- and in a standard and simpler way?
:p
????
????
You have my vote for the most useless post of the year.
Im not quite there, and need a little bit more help, when i run my code, update_record="4c3333"
i get L3^C out.....anyone help ,me so i can get the correct L33.
int Convert_Update_From_Hex(char *update_record, char *field_name )
{
int i,k=0;
char *pconvert=update_record;
char converted_string[20];
while(sscanf(pconvert, "%2x", &i ) == 1 )
{
converted_string[k]=i;
k++;
pconvert +=2;
}
strcpy(update_record,converted_string);
Null terminate converted_string to use it correctly with strcpy
.
Okay, i have now NULL termainted my converted_string, but this still does not work, any help?
[LEFT]int Convert_Update_From_Hex(char *update_record, char *field_name )
{
int i, k=0;
char *pconvert=update_record;
char converted_string[20];[/LEFT]
[LEFT] while(sscanf(pconvert, "%2x", &i ) == 1 )
{
converted_string[k]=i;
k++;
pconvert +=2;
}
converted_string[k]=NULL;[/LEFT]
[LEFT] strcpy(update_record,converted_string);[/LEFT]
An additional question
If i want to convert hex 4c4c
Do i pass the complete string of 4c4c or do i pass 2 characters at a time, ie 4c, let the conversion take place to L, then pass the next 4c and let the conversion take place?
Okay, i have now NULL termainted my converted_string, but this still does not work, any help?
Well, it does work, even though you did this
converted_string[k]=NULL;
instead of this
converted_string[k]='\0'; /* null terminate */
So I guess you'd have to provide more context.
Do i pass the complete string of 4c4c or do i pass 2 characters at a time, ie 4c, let the conversion take place to L, then pass the next 4c and let the conversion take place?
The function will handle a larger string, but if you want to make more work for yourself you could pass only 2 characters at a time.
We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.