#include <iostream>
#include <cstring>
#include <cstdio>
#include <cstdlib>
using namespace std;
//function IntToHex ( DecimalValue : Integer; MinimumWidth : Integer ) : string;
char* IntToHex(int DecimalValue, int MinimumWidth)//, char b[])
{
static char b[256];
sprintf(b, "%lX", DecimalValue);
int len = strlen(b);
int i = len;
int l = MinimumWidth-len;
while(i>=0)
{
b[i+l]=b[i];
i--;
}
while((i+l)>=0)
{
b[i+l] = '0';
i--;
}
return b;
}
и
Код:
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cstdlib>
using namespace std;
//function IntToHex ( DecimalValue : Integer; MinimumWidth : Integer ) : string;
char* IntToHex(char* b[], int DecimalValue, int MinimumWidth)//, char b[])
{
sprintf(b, "%lX", DecimalValue);
int len = strlen(b);
int i = len;
int l = MinimumWidth-len;
while(i>=0)
{
b[i+l]=b[i];
i--;
}
while((i+l)>=0)
{
b[i+l] = '0';
i--;
}
return b;
}
нужно заставить работать эту функцию без внешнего буффера, т.к. иначе не получается использовать конструкцию типа
printf(" %s %s",IntToHex(125,4),IntToHex(170,8));
проблема в том что всегда возвращается результат первого вызова функции.
прошу не советовать использовать std::string.
Кислый, эт вместо спасибо?)
чего там говорить то, код простой, хотя наверно в одном месте можно немного оптимизнуть избавившись от деления, сделав инкремент на единицу а не четвёрку и вместо умножения добавить сдвиг влево)
__________________
Я здесь практически не появляюсь!, Skype - ikskor