如何解决将字符串转换为十六进制字符串
按照下面给出的片段进行操作。
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 值的时间戳。 唯一的问题是Staff ID是字符串,不能转换成整数。
我想知道是否有一种方法可以将字符串转换为十六进制字符串并将所有这些字符串/整数组合在一起以创建要显示的完整密码。
伙计们干杯。
解决方法
一组奇怪的要求和逻辑,但为什么不使用 GetHashCode 将任何长度的字符串转换为整数,然后将其转换为十六进制
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;
}
我不记得遇到 A 作为格式说明符。我一直使用 X 表示十六进制。您可以标记一个数字以将结果填充到一定数量的数字,例如 X8
ps;将 + 连接到字符串时的任何数字都将连接,因此您的代码可以简化为以下内容,但请注意,该版本每分钟而不是每 10 次生成新密码(如果要求每 10 次,请将日期时间子字符串放回)
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;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。