C concatenate int

I will be the first to admit that I am a C # guy 100%, and C is not for me. However, I have a problem. I need to combine 7 with HashUrl (HashInt) and then with HashInt Any help would be greatly appreciated.

int main(int argc)
{
unsigned int HashInt;
HashInt = HashURL(argc);
// I need to return 7 + CheckHash(HashInt) + HashInt but not ADDING, but concanenating them
return HOWEVERTOGETTHESTRING;
}

I should have indicated the use of this. In fact, it will be used in the student project VB6.

Private Declare Function main Lib "checksum.dll" (ByVal pStr As String) As Long

Private Sub Command1_Click()
MsgBox main("http://hello.com")
End Sub

The full source for the C library is

#include <stdio.h>
#include <string.h>
#include <windows.h>
#include <string.h>
#include <winreg.h>
#include <stdlib.h>

int StrToInt(char *pStr, int Init, int Factor)
{
while (*pStr) {
Init *= Factor; 
Init += *pStr++;
}
return Init;
}

int HashURL(char *pStr)
{
unsigned int C1, C2, T1, T2;

C1 = StrToInt(pStr, 0x1505, 0x21);
C2 = StrToInt(pStr, 0, 0x1003F);
C1 >>= 2;
C1 = ((C1 >> 4) & 0x3FFFFC0) | (C1 & 0x3F);
C1 = ((C1 >> 4) & 0x3FFC00) | (C1 & 0x3FF);
C1 = ((C1 >> 4) & 0x3C000) | (C1 & 0x3FFF);

T1 = (C1 & 0x3C0) << 4;
T1 |= C1 & 0x3C;
T1 = (T1 << 2) | (C2 & 0xF0F);

T2 = (C1 & 0xFFFFC000) << 4;
T2 |= C1 & 0x3C00;
T2 = (T2 << 0xA) | (C2 & 0xF0F0000);

return (T1 | T2);
}

char CheckHash(unsigned int HashInt)
{
int Check = 0, Flag = 0;
int Remainder;

do {
Remainder = HashInt % 10;
HashInt /= 10;
if (1 == (Flag % 2) ){
Remainder += Remainder;
Remainder = (Remainder / 10) + (Remainder % 10);
}
Check += Remainder;
Flag ++;
} while( 0 != HashInt);

Check %= 10;
if (0 != Check) {
Check = 10 - Check;
if (1 == (Flag % 2)) {
if (1 == (Check % 2)) {
Check += 9;
}
Check >>= 1;
}
}
Check += 0x30;
return Check;
}

int main(int argc)
{
 unsigned int HashInt;
    int result;
    HashInt = HashURL(argc);
    char temp[100];
    sprintf(temp, "7%i%j", CheckHash(HashInt), HashInt);
    result = atoi(temp);
    return result;
}

give " http://www.hello.com " should return 783544359868, but it doesn’t

+5
source share
3 answers

You can use the sprintf function to create formatted strings. To combine 3 integers into a string, you can use something like

sprintf(string, "%d%d%d", int1, int2, int3)
+5
source

C, , , . int:


int main(int argc) {
    unsigned int HashInt;
    int result;
    HashInt = HashURL(argc);
    char temp[50];
    sprintf(temp, "7%i%i", CheckHash(HashInt), HashInt);
    result = atoi(temp);
    return result;
}

. ...

+1

Firstly, you can see:

asprintf

Just run man asprintfon a Linux system.

Here is a link that has a simple example that you can adapt:

http://www.gnu.org/s/libc/manual/html_node/Dynamic-Output.html

0
source

All Articles