繁体   English   中英

C# - Vsprintf equivilant?将 Char 转换为 Int

[英]C# - Vsprintf equivilant?Converting Char to Int

使用 vsprintf,下面的 c 代码将 char 数组转换为 int。 我将如何在 c# 中做到这一点? 我尝试将 c# 字符串转换为 int,然后添加值,但返回结果不一样。 我的 c# 代码需要返回与 c 代码相同的值(3224115)

C# 代码

  var  astring = "123";
        int output = 0;
        foreach(char c in astring){
            var currentChar = (int)c;
            output += c;
        }
//output = 150

C代码

void vout(char *string, char *fmt, ...);                                        
char fmt1 [] = "%d";                                                  

int main(void)                                                                  
{                                                                               
   char string[32];                                                            

   vout(string, fmt1, '123');        //output is 3224115                             
   printf("The string is:  %s\n", string);                                      
}                                                                               
void vout(char *string, char *fmt, ...)                                         

{                                                                               
   va_list arg_ptr;                                                             

   va_start(arg_ptr, fmt);                                                      
   vsprintf(string, fmt, arg_ptr);                                              
   va_end(arg_ptr);                                                             
} 

终于想通了。 可能会更简洁一些,但它可以工作,并获得与 c 代码相同的输出。

 public static ulong getAsciiLiteral(string x)
{
    int len = x.Length;
    string[] strArray = new string[32];
    byte[] finalByte = new byte[32];
    int i = 0;
    int i2 = 0;
    int i3 = 0;
    int offset = 0;
    var hexFinalString = "0x";
    var bytes = Encoding.ASCII.GetBytes(x);

    if(len >= 5)
    {
        while (true)
        {
            if (4 + i3 == len)
            {
                offset = i3;
                break;
            }
            else
            {
                i3++;
            }
        }

    }


    foreach (byte b in bytes)
    {
        strArray[i] = b.ToString("X2");
        i++;
    }
    i = 0;
    i3 = 0;
    while (i3 < len - 1)
    {



        hexFinalString += strArray[offset];
        offset++;
        i3++;
    }


    var ret = Convert.ToUInt64(hexFinalString, 16);
    return ret;

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM