1
I have an array of char but values is decimal representation of a character. example:
char bytes[4]={50,48,49,51}
how to convert this to get char array like this:
char bytes1[4]={2,0,1,3}
c
1
I have an array of char but values is decimal representation of a character. example:
char bytes[4]={50,48,49,51}
how to convert this to get char array like this:
char bytes1[4]={2,0,1,3}
c
The quick and dirty solution is to substract 48. Could be a for loop that iterates over the bytes[] array.
if you want to convert it to array of int:
#include <iostream>
using namespace std;
int main()
{
char bytes[4]={50,48,49,51};
int bytes1[4];
for (int i = 0; i < 4; i++)
bytes1[i] = (bytes[i] - 48) ;
for (int i = 0; i < 4; i++)
cout << bytes1[i] << ' ';
return 0;
}
if you want it as array of char:
int main()
{
char bytes[4]={50,48,49,51};
char bytes1[4];
for (int i = 0; i < 4; i++)
bytes1[i] = (bytes[i] - 48) + 48;
for (int i = 0; i < 4; i++)
cout << bytes1[i] << ' ';
return 0;
}
this simple implementation base on ASCII code values
The quick and dirty solution of subtracting 48 (or 0x30 if we're talking hexadecimal) will work. However, for multi-character values, if your sequence of characters is null-terminated (as it should be), the better way is to use sscanf from the <cstdio> library.
The C version would be:
#include <stdio.h>
int main() {
char bytes[4] = {50, 48, 49, 51};
int bytes1[4];
for (int i = 0; i < 4; i++) {
bytes1[i] = bytes[i] - '0';
}
for (int i = 0; i < 4; i++) {
printf("%d ", bytes1[i]);
}
return 0;
}
2 0 1 3
We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.