Re: convert int to hex
On Thu, 29 Jan 2015 14:48:02 +0100, jak wrote:
Il 27/01/2015 23:42, ghada glissa ha scritto:
Le mardi 27 janvier 2015 22:55:23 UTC+1, ghada glissa a ?crit :
Dear all,
Is there any predefined function that convert in to hex or octet string in c++.
Regards.
Thank you for your reply.
This function intToHex return a string or i want to get an array of char that will be easy to handle.
for exp res=intToHex(X)=12f5e188
i want it
res[0]=12
res[1]=f5
res[2]=e1
res[3]=88
Regards.
Forgive me but I did not understand clearly what you want but you can
take a look at this example. Maybe something can be worthwhile:
#include <stdio>
#include <string>
#include <vector>
#include <iostream>
using namespace std;
string BaseConv(int, void *, int);
// BaseConv parameters:
// 1) Byte offset from base address
// 2) Base address
// 3) Conversion base: 2 to 16
int main(int argc, char *argv[])
{
long Value = 0x12f5e188;
int CBase;
vector <string> Cnv;
unsigned int i;
for (CBase = 2; CBase <= 16; CBase++)
{
cout << endl << "Base " << CBase << ": " << endl;
Cnv.clear();
for (i = 0; i < sizeof Value; i++)
Cnv.push_back(BaseConv(i, &Value, CBase));
for (i = 0; i < Cnv.size(); i++)
cout << i + 1 << ") " << Cnv[i] << endl;
cout << endl;
system("pause");
}
return 0;
}
string BaseConv(int BytePos, void *Data, int Base)
{
unsigned char Byte = ((unsigned char *)Data)[BytePos];
string Res = "";
const char LT[] = "0123456789ABCDEF";
if (Base > 1 && Base <= 16)
for (; Byte > 0; Byte /= Base)
Res = LT[Byte % Base] + Res;
return Res;
}
#include <stdio.h>
#include <string.h>
#include <limits.h>
#define u8 unsigned char
#define u32 unsigned
#define i32 int
#define P printf
#define F for
#define R return
// result ok if return one number > 0
// that is the len of the string result even if there is some 0 in it
i32 uToA(u8* rstr, u32 rstrsize, u32 argnumber, u32 base)
{u32 i, j, k;
u8 tmp[64];
u8 str[64]="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
if(rstr==0) R -1;
if(rstrsize > 0xFFFFFFF) R -1;
rstr[0]=0;
if(base<=1 || base>255) R -1;
F( i=0, tmp[0]=0; argnumber; ++i)
{tmp[i]=argnumber%base; argnumber/=base;}
if(i+2>rstrsize) R -2;
if(i!=0) --i;
if(base<=36)
{F(k=0, j=i; ;--j, ++k)
{rstr[k]=str[tmp[j]];
if(j==0) break;
}
}
else {F(k=0, j=i; ;--j, ++k)
{rstr[k]=tmp[j];
if(j==0) break;
}
}
++k; rstr[k]=0;
R k;
}
int main(void)
{u32 m=0x12f5e188, i, x, base;
i32 r;
u8 result[128]; // 0..126 127[0]
F(base=0; base<=256; ++base)
{r=uToA(result, 128, m, base);
P("base=%u r=%u ", base, r);
if(r>0)
{F(i=0; i<(u32)r; ++i)
{if(base<=36) P("%c", result[i]);
else {x=result[i];
P("%x", x);
}
if(base>36 && i!=(u32)r-1) P("_");
}
}
if(base!=0 && base%3==0) P("\n");
else P("#");
if(base>=2 && base<=36 && strlen(result)!=(u32)r)
P("Find Error base=%u", base);
}
P("\n");
R 0;
}
base=0 r=4294967295 #base=1 r=4294967295
#base=2 r=29 10010111101011110000110001000
#base=3 r=18 211011120100120120
base=4 r=15 102331132012020
#base=5 r=13 1122413311234#base=6 r=11 51322023240
base=7 r=11 10611560514#base=8 r=10 2275360610#base=9 r=9 734510516
base=10 r=9 318103944#base=11 r=9 15361A224#base=12 r=8 8A647B20
base=13 r=8 50B991B2#base=14 r=8 30367144#base=15 r=8 1CDD8049
base=16 r=8 12F5E188#base=17 r=7 D30B6BC#base=18 r=7 9664A56
base=19 r=7 6E8HB6G#base r=7 4J82JH4#base=21 r=7 3EIDG2I
base=22 r=7 2HFKBC4#base=23 r=7 239GIG6#base=24 r=7 1FMINJ0
base=25 r=7 17E8G7J#base=26 r=7 10K2JP2#base=27 r=6 M4F9FF
base=28 r=6 IDEON4#base=29 r=6 FELQPF#base=30 r=6 D2LIOO
base=31 r=6 B3DQEH#base=32 r=6 9FBOC8#base=33 r=6 847NFF
base=34 r=6 701EEC#base=35 r=6 61YBO4#base=36 r=6 59E2KO
base=37 r=6 4_15_1b_2_9_21#base=38 r=6 4_0_15_7_16_10#base=39 r=6
3_14_13_17_c_f
base=40 r=6 3_4_a_e_26_18#base=41 r=6 2_1e_17_13_26_20#base=42 r=6
2_12_9_19_1_1
2
base=43 r=6 2_7_1_29_3_6#base=44 r=6 1_28_26_d_27_4#base=45 r=6
1_20_19_26_10_18
base=46 r=6 1_19_2_4_1f_6#base=47 r=6 1_12_8_2a_1c_1#base=48 r=6
1_b_2c_11_2d_18
base=49 r=6 1_6_8_29_5_b#base=50 r=6 1_0_2c_29_1c_2c#base=51 r=5
2f_1_2_20_c
base=52 r=5 2b_1a_11_33_1c#base=53 r=5 28_10_24_1d_b#base=54 r=5
25_16_9_7_2a
base=55 r=5 22_29_35_12_4#base=56 r=5 20_13_14_b_20#base=57 r=5
1e_7_27_e_36
base=58 r=5 1c_6_15_c_2c#base=59 r=5 1a_e_32_36_10#base=60 r=5
18_20_2a_c_18
base=61 r=5 16_3b_1b_32_2e#base=62 r=5 15_20_2d_16_30#base=63 r=5
14_c_b_7_3c
base=64 r=5 12_3d_1e_6_8#base=65 r=5 11_35_14_38_36#base=66 r=5
10_32_1e_28_30
base=67 r=5 f_34_2b_42_4#base=68 r=5 e_3b_2e_7_c#base=69 r=5
e_2_16_24_6
base=70 r=5 d_11_1d_c_4#base=71 r=5 c_24_37_18_11#base=72 r=5
b_3c_12_2e_18
base=73 r=5 b_e_33_48_14#base=74 r=5 a_2d_0_29_46#base=75 r=5
a_4_1_3c_45
base=76 r=5 9_28_31_1e_10#base=77 r=5 9_3_3c_10_4#base=78 r=5
8_2e_19_19_36
base=79 r=5 8_d_f_2_10#base=80 r=5 7_3d_17_3b_18#base=81 r=5
7_1f_2e_5_f
base=82 r=5 7_2_4c_3c_20#base=83 r=5 6_3a_1b_34_35#base=84 r=5
6_20_3a_3f_3c
base=85 r=5 6_7_53_13_1d#base=86 r=5 5_46_a_17_6#base=87 r=5
5_30_6_12_f
base=88 r=5 5_1a_45_29_30#base=89 r=5 5_6_14_32_37#base=90 r=5
4_4c_20_8_18
base=91 r=5 4_3a_b_40_43#base' r=5 4_28_2f_f_34#base=93 r=5
4_17_2c_19_30
base=94 r=5 4_6_5c_54_30#base=95 r=5 3_56_1_5c_36#base=96 r=5
3_47_34_2e_48
base=97 r=5 3_39_34_2e_a#base=98 r=5 3_2b_60_2_3c#base=99 r=5
3_1e_53_1b_f
base=100 r=5 3_12_a_27_2c#base=101 r=5 3_5_4b_3d_0#base=102 r=5
2_5f_4d_10_c
base=103 r=5 2_55_b_23_53#base=104 r=5 2_4a_52_33_50#base=105 r=5
2_40_52_65_27
base=106 r=5 2_37_9_e_40#base=107 r=5 2_2d_47_2e_6#base=108 r=5
2_24_38_1e_60
base=109 r=5 2_1b_45_12_58#base=110 r=5 2_12_6d_40_4#base=111 r=5
2_a_42_3_21
base=112 r=5 2_2_2f_5_58#base=113 r=5 1_6b_34_17_11#base=114 r=5
1_64_51_7_36
base=115 r=5 1_5e_12_1a_1d#base=116 r=5 1_57_5c_23_2c#base=117 r=5
1_51_47_6c_f
base=118 r=5 1_4b_47_56_10#base=119 r=5 1_45_5b_2d_2e#base=120 r=5
1_40_a_42_18
base=121 r=5 1_3a_43_70_1a#base=122 r=5 1_35_16_19_2e#base=123 r=5
1_2f_74_c_72
base=124 r=5 1_2a_68_2a_30#base=125 r=5 1_25_6c_51_45#base=126 r=5
1_21_2_62_3c
base=127 r=5 1_1c_25_3d_3b#base=128 r=5 1_17_57_43_8#base=129 r=5
1_13_17_57_6
base=130 r=5 1_e_66_5d_36#base=131 r=5 1_a_41_3a_32#base=132 r=5
1_6_28_56_30
base=133 r=5 1_2_1c_13_82#base=134 r=4 84_1b_64_4#base=135 r=4
81_27_23_45
base=136 r=4 7e_3e_47_50#base=137 r=4 7b_61_32_52#base=138 r=4
79_5_57_6
base=139 r=4 76_3e_15_51#base=140 r=4 73_81_6f_4#base=141 r=4
71_43_38_30
base=142 r=4 6f_d_76_58#base=143 r=4 6c_6f_8a_f#base=144 r=4
6a_4c_5f_18
base=145 r=4 68_31_73_2c#base=146 r=4 66_1f_24_14#base=147 r=4
64_14_84_3c
base=148 r=4 62_12_5e_90#base=149 r=4 60_18_35_77#base=150 r=4
5e_25_8e_90
base=151 r=4 5c_3b_2f_60#base=152 r=4 5a_58_35_10#base=153 r=4
58_7c_92_72
base=154 r=4 57_f_8_4#base=155 r=4 55_41_53_4f#base=156 r=4
53_7b_33_84
base=157 r=4 52_1f_36_79#base=158 r=4 50_66_50_10#base=159 r=4
4f_15_73_75
base=160 r=4 4d_69_95_68#base=161 r=4 4c_24_8_90#base=162 r=4
4a_85_2_60
base=163 r=4 49_49_79_99#base=164 r=4 48_13_1e_20#base=165 r=4
46_86_2a_72
base=166 r=4 45_59_96_88#base=167 r=4 44_32_c_6#base=168 r=4
43_e_73_90
base=169 r=4 41_98_76_91#base=170 r=4 40_7f_9_72#base=171 r=4
3f_69_76_a8
base=172 r=4 3e_58_61_5c#base=173 r=4 3d_4b_6b_15#base=174 r=4
3c_42_8b_66
base=175 r=4 3b_3e_b_90#base=176 r=4 3a_3d_40_88#base=177 r=4
39_40_74_4b
base=178 r=4 38_47_9e_90#base=179 r=4 37_53_5_1#base=180 r=4
36_62_4_18
base=181 r=4 35_74_97_40#base=182 r=4 34_8b_4d_9e#base=183 r=4
33_a5_8a_a8
base=184 r=4 33_b_91_90#base=185 r=4 32_2c_5a_90#base=186 r=4
31_50_98_30
base=187 r=4 30_78_8a_72#base=188 r=4 2f_a4_2a_30#base=189 r=4
2f_16_2c_7b
base=190 r=4 2e_47_8d_36#base=191 r=4 2d_7c_88_81#base=192 r=4
2c_b5_17_48
base=193 r=4 2c_2f_b3_ba#base=194 r=4 2b_6e_17_a#base=195 r=4
2a_af_7f_36
base=196 r=4 2a_30_63_3c#base=197 r=4 29_77_80_a4#base=198 r=4
28_c2_d_72
base=199 r=4 28_48_90_38#base 0 r=4 27_98_77_90#base 1 r=4
27_22_85_8a
base 2 r=4 26_77_b6_0#base 3 r=4 26_5_39_66#base 4 r=4
25_5f_a1_c
base 5 r=4 24_bd_51_72#base 6 r=4 24_50_11_ba#base 7 r=4
23_b2_ad_6
base 8 r=4 23_48_81_b8#base 9 r=4 22_b0_5a_5c#base=210 r=4
22_49_32_90
base=211 r=4 21_b6_6_85#base=212 r=4 21_51_a6_40#base=213 r=4
20_c3_66_9f
base=214 r=4 20_62_17_6#base=215 r=4 20_1_8a_31#base=216 r=4
1f_7a_f_60
base=217 r=4 1f_1c_51_ac#base=218 r=4 1e_99_76_58#base=219 r=4
1e_3e_79_5d
base=220 r=4 1d_c0_57_4#base=221 r=4 1d_68_b_50#base=222 r=4
1d_10_70_90
base=223 r=4 1c_98_a7_13#base=224 r=4 1c_43_aa_c8#base=225 r=4
1b_d0_78_45
base=226 r=4 1b_7e_b_82#base=227 r=4 1b_2c_43_da#base=228 r=4
1a_bf_3c_a8
base=229 r=4 1a_6f_d7_2c#base=230 r=4 1a_21_46_90#base=231 r=4
19_ba_52_51
base=232 r=4 19_6e_11_a0#base=233 r=4 19_22_69_e4#base=234 r=4
18_c1_70_84
base=235 r=4 18_78_21_bd#base=236 r=4 18_2f_66_10#base=237 r=4
17_d4_4f_ae
base=238 r=4 17_8d_c9_2e#base=239 r=4 17_47_e2_ca#base=240 r=4
17_2_99_18
base=241 r=4 16_ae_d9_5b#base=242 r=4 16_6b_b1_1a#base=243 r=4
16_29_1c_b1
base=244 r=4 15_db_c_a8#base=245 r=4 15_9a_80_6d#base=246 r=4
15_5a_81_72
base=247 r=4 15_1b_c_36#base=248 r=4 14_d4_15_30#base=249 r=4
14_96_9b_db
base=250 r=4 14_59_a5_c2#base=251 r=4 14_1d_2f_62#base=252 r=4
13_dd_31_3c
base=253 r=4 13_a2_aa_d5#base=254 r=4 13_68_9d_ba#base=255 r=4
13_2f_6_72
base=256 r=4294967295 #