• 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Library] DataConvert
#1
Hello, I would like to present a simple include to convert numbers between systems, decimal, hexadecimal, binary, octal.



Code:
DataConvert.inc

Copyright ? 2021 Abyss Morgan. All rights reserved.

Contributors: Crayder, Shiny



Website: https://adm.ct8.pl



Plugins: SScanf

Modules: None



File Version: 2.2.0

SScanf Version: 2.8.2



Definitions:

FIRST_FILE_ADDRESS

INVALID_FILE_ID

INVALID_FILE_HANDLE

INT_NUMBER_LEN

HEX_NUMBER_LEN

BIN_NUMBER_LEN

OCT_NUMBER_LEN



Functions:

strcopy(const input[],output[]);  //string copy for warning 224: indeterminate array size

fstrcopy(const input[],output[],maxdest = sizeof(output));   //fast string copy

ABCToCBA(const input[],output[]);

AnyToInt(string[],type,&bool:flag);

IntToAny(value,output[],type);

rot13(string[]);

code128(const input[],output[]);

swap_int({Float,_}:int1,{Float,_}:int2);

swap_string(string1[], string2[], dest1 = sizeof(string1), dest2 = sizeof(string2));

ContainInSeries(value,...);

ContainInSeriesFloat(Float:value,Float:...);

StringEqual(string1[],string2[],ignorecase);

StringNotEqual(string1[],string2[],ignorecase);

base64_decode(const input[],output[]); //d:base64

base64_encode(const input[],output[]); //e:base64

StripNewLine(string[]);

strreplace(string[],const search[],const replacement[],bool:ignorecase = false,pos = 0,limit = -1,maxlength = sizeof(string));

strlower(string[]);

strupper(string[]);

DataConvert::InvertString(const input[], output[], maxdest = sizeof(output));

DataConvert::StringToHexString(const input[], output[], maxdest = sizeof(output));

DataConvert::HexStringToString(const input[], output[], maxdest = sizeof(output));



File functions:

GetFileHandleID(File:handle);

GetFileID(File:handle);

fcopy(const input[],output[]);

frename(oldname[],newname[]);

DataConvert::FileCreate(const name[]);

DataConvert::MergeFile(const first_file[],const second_file[],bool:erase_second=false);

DataConvert::MergeFileGroup(const group_name[],const output[],upperbound_index,bool:erase_input=false);

DataConvert::SplitFile(const input[],const output[],max_size,&upperbound_index=0);



Validators:

IsDecimalNumber(const string[]);

IsHexNumber(const string[]);

IsBinaryNumber(const string[]);

IsOctalNumber(const string[]);

IsFloatNumber(const string[]);



Convert to Bool:

StringToBool(const string[]);

IntToBool(value);



Convert to Int:

StringToInt(const string[]);

BoolToInt(bool:boolean);

HexToInt(const string[]);

BinToInt(const string[]);

OctToInt(const string[]);



Convert to Hex:

IntToHex(value);

IntToHexEx(value);

BinToHex(const string[]);

BinToHexEx(const string[]);

OctToHex(const string[]);



Convert to Bin:

IntToBin(value);

HexToBin(const string[]);

OctToBin(const string[]);



Convert to Oct:

IntToOct(value);

HexToOct(const string[]);

BinToOct(const string[]);



Binary Data Convert:

FloatToInt(Float:value); //Convert Float binary data to Integer binary data !

IntToFloat(value); //Convert Integer binary data to Float binary data !



Examples:

Code:
new File:edi = fopen("test.txt",io_readwrite);

new id = GetFileID(edi); //returns the number of open file: 1, 2, 3, 4, ...



new a = BinToInt("1010"); //return 10



new hex[10];

hex = IntToHex(15); //return 00000F

hex = IntToHexEx(15); //return F



new g = 15, Float:h = 15.0;

if(IsIdentical(g,h)){ //This operator can only be used on variables

    printf("YES");

} else {

    printf("NO"); //<-- print this

}



new buf[128];

ABCToCBA("Hello",buf);

printf(buf); //print: olleH



new v1 = 15, v2 = 19;

swap_int(v1,v2); //swapvars by Crayder

//after operation: v1 = 19, v2 = 15



new test = FloatToInt(25666.000000); //return 1187546112



new Float:test2 = IntToFloat(1084227584); //return 5.0



//http://www.rot13.com

new rot[64];

rot = rot13("San Andreas Multiplayer"); //return "Fna Naqernf Zhygvcynlre"



//ContainInSeries(Float)



new myvalue = 431;

    

//if(myvalue == 425 || myvalue == 430 || myvalue == 432 || myvalue == 447 || myvalue == 464 || myvalue == 476 || myvalue == 520)

if(ContainInSeries(myvalue,425,430,432,447,464,476,520)){ //millitary vehicles

    printf("#1 YES");

} else {

    printf("#1 NO"); //<-- print this

}



//if(myvalue != 425 && myvalue != 430 && myvalue != 432 && myvalue != 447 && myvalue != 464 && myvalue != 476 && myvalue != 520)

if(!ContainInSeries(myvalue,425,430,432,447,464,476,520)){

    printf("#2 YES"); //<-- print this

} else {

    printf("#2 NO");

}



new Float:myfloatvalue = 15.0;

if(ContainInSeriesFloat(myfloatvalue,12.0,1.0)){

    printf("#3 YES");

} else {

    printf("#3 NO"); //<-- print this

}



Download:

DataConvert.inc
  Reply
#2
Update v2.2.0:



- Added functions:

Code:
DataConvert::InvertString(const input[], output[], maxdest = sizeof(output));

DataConvert::StringToHexString(const input[], output[], maxdest = sizeof(output));

DataConvert::HexStringToString(const input[], output[], maxdest = sizeof(output));



- Added file functions:

Code:
DataConvert::FileCreate(const name[]);

DataConvert::MergeFile(const first_file[],const second_file[],bool:erase_second=false);

DataConvert::MergeFileGroup(const group_name[],const output[],upperbound_index,bool:erase_input=false);

DataConvert::SplitFile(const input[],const output[],max_size,&upperbound_index=0);
  Reply
#3
a great contribution, thanks for sharing.
  Reply


Forum Jump: