2 kleine Methoden aus C++ in C# erstellen



  • Hallo allerseits,

    ich hoffe ihr könnt mir helfen. Ich habe 2 "kleine" Methoden aus C++, die ich in C# schreiben muss. Ich weiss aber nicht wie ich das realisieren kann. Es sieht so einfach aus, aber ich komme nicht drauf.

    unsigned long get_dec(char* byte_string,char len) {
    // Converts two hex characters into one byte
      char i, offset;
      unsigned long result=0;
      offset = '0' ;
      for (i=0;i<len; i++) {
        result = result * 10 + (byte_string[i]-offset);
      }
      return(result);
    }
    
    unsigned long get_hex(char* byte_string,char len) {
    // Converts two hex characters into one byte
      char i, offset;
      unsigned long result=0;
      for (i=0;i<len; i++) {
        if( byte_string[i]  <= '9' )  // ASCII digits
          offset = '0' ;
        else if( byte_string[i]  <= 'F' )   //  ASCII uppercase Letters  
          offset = 'A' - 10;      
        else  // ASCII lower case Letters    
          offset = 'a' - 10;  
        result = result * 16 + (byte_string[i]-offset);
      }
      return(result);
    }
    


  • Wo hängst du denn? Die Funktionen kann man fast 1:1 übernehmen (nur ein wenig Datentypen anpassen)

    evtl. auch interessant:
    (msdn) How to: Convert Between Hexadecimal Strings and Numeric Types (C# Programming Guide)



  • So müsste es doch ganz easy korrekt sein...

    UInt32 get_dec(string byte_string, string len)
            {
                int i, offset;
                UInt32 result = 0;
                offset = '0';
                for (i = 0; i < len.Length; i++)
                {
                    result = result * 10 + Convert.ToUInt32(byte_string[i] - offset); 
                }
                return result;
            }
    
    UInt32 get_hex(string byte_string, char len)
            {
                int i, offset;
                UInt32 result = 0;
                for (i = 0; i < len; i++) {
                    if( byte_string[i]  <= '9' )  // ASCII digits
                    offset = '0' ;
                else if( byte_string[i]  <= 'F' )   //  ASCII uppercase Letters  
                    offset = 'A' - 10;      
                else  // ASCII lower case Letters    
                    offset = 'a' - 10;
                    result = result * 16 + Convert.ToUInt32(byte_string[i] - offset);
                }
                return(result); 
            }
    

Anmelden zum Antworten