C# 将字符串转换为十六进制字符串

C# 将字符串转换为十六进制字符串,c#,hex,C#,Hex,按照下面给出的代码片段进行操作 public static string NewPassword() { Ticket objTick = new Ticket(); string shortStaffID = objTick.GetStaffID().Substring(0, 2); string tickNum = Convert.ToString(objTick.GetTicketNumber()); string t

按照下面给出的代码片段进行操作

public static string NewPassword()
    {
        Ticket objTick = new Ticket();
        string shortStaffID = objTick.GetStaffID().Substring(0, 2);
        string tickNum = Convert.ToString(objTick.GetTicketNumber());
        string timeStamp = DateTime.Now.ToString("HHmmss").Substring(0, 3);

        string combinePass = shortStaffID + tickNum + timeStamp;
        string hexPassword = int.Parse(combinePass).ToString("A");

        return hexPassword;
        
    }
我正在尝试创建密码生成器,该生成器将根据员工ID(例如:JohnD)创建临时密码。此外还有一个票号,该票号为int值,时间戳也是int值。 唯一的问题是员工ID是字符串,不能转换为整数

我想知道是否有一种方法可以将字符串转换为十六进制字符串,并将所有这些字符串/整数组合在一起,以创建一个完整的密码来显示


大家好。

一组奇怪的要求和逻辑,但为什么不使用hashcode将任意长度的字符串转换为整数,然后将其十六进制呢

public static string NewPassword()
{
    Ticket objTick = new Ticket();
    string shortStaffID = objTick.GetStaffID().Substring(0, 2);
    string tickNum = Convert.ToString(objTick.GetTicketNumber());
    string timeStamp = DateTime.Now.ToString("HHmm").Substring(0, 3);

    string combinePass = shortStaffID + tickNum + timeStamp;
    string hexPassword = combinePass.GetHashCode().ToString("X8");

    return hexPassword;
    
}
我不记得曾经遇到过作为格式说明符的。我总是用X来表示十六进制。您可以标记一个数字,将结果填充到特定的位数,例如X8

聚苯乙烯;将+转换为字符串时的任何数字都将连接起来,这样您的代码就可以简化为以下内容,不过请注意,该版本每分钟而不是每10次生成一个新密码(如果要求每10次,请将datetime子字符串放回)


我正在做一个基于创建票证系统的评估,我的讲师提供了这些要求,并表明使用int.parse是唯一的方法,但谢谢你,我将尝试一下。是的,我也相当不确定“a”格式说明符,因为它没有获得任何有关它的信息时,研究,但X格式说明符正在做什么,我希望它现在这样做,所以谢谢你!好的,您可以随意获取所有单个字符串的hashcode,并获取它们的位,比如
Math.Abs(StaffId.GetHashCode()).ToString(“000”)。删除(2)
,这意味着“如果GetHashCode返回98765,这将产生98”。整个事情有点奇怪。通常我们会准备一个不可预测的密码。在创建可预测的密码时存在大量明显的问题
GetHashCode()
在不同的.Net版本上很可能会为相同的值返回不同的输出。因此,如果散列被存储(比如,在RDMS中),那么写在不同C#/.Net上的客户机将出现问题versions@DmitryBychenko它甚至会在具有相同.NET版本的同一台PC上生成不同的值-只保证在sinlge进程实例中创建相同的值,请参阅。但据我所知,这个问题将只用于密码建议,而不是永久密码
public static string NewPassword()
{
    Ticket objTick = new Ticket();
    string combinePass = objTick.GetStaffID() + objTick.GetTicketNumber() + DateTime.Now.ToString("HHmm");

    string hexPassword = combinePass.GetHashCode().ToString("X8");

    return hexPassword;
    
}