সি # তে কোনও উপায় আছে কি দেখার জন্য যে কোনও স্ট্রিং বেস 64 এনকোডযুক্ত তা রূপান্তর করার চেষ্টা করা ছাড়া অন্য কোনও ত্রুটি আছে কিনা তা দেখুন? আমার কাছে কোড কোড রয়েছে:
// Convert base64-encoded hash value into a byte array.
byte[] HashBytes = Convert.FromBase64String(Value);
মানটি বেইজ 64 স্ট্রিং না হলে ঘটে যাওয়া "বেস -64 স্ট্রিংয়ের অবৈধ অক্ষর" ব্যতীত আমি এড়াতে চাই। আমি কেবল একটি ব্যতিক্রম পরিচালনা করার পরিবর্তে মিথ্যা যাচাই বাছাই করতে চাই কারণ আমি আশা করি যে কখনও কখনও এই মানটি একটি বেস 64 স্ট্রিং হয়ে উঠবে না। কনভার্ট.ফর্মব্যাস 64 স্ট্রিং ফাংশনটি ব্যবহার করার আগে কি চেক করার কোনও উপায় আছে?
ধন্যবাদ!
আপডেট:
আপনার সমস্ত উত্তরের জন্য ধন্যবাদ। এখানে আপনি এখন পর্যন্ত সমস্ত ব্যবহার করতে পারেন এমন একটি এক্সটেনশন পদ্ধতি এখানে মনে হচ্ছে আপনার স্ট্রিংটি কনভার্টে চলে যাবে তা নিশ্চিত করে। ফ্রেমব্যাস 64 স্ট্রিং ব্যতিক্রম ছাড়াই। .NET "644 বেসকে রূপান্তর করার সময় সমস্ত ট্রেলিং এবং শেষ স্থানগুলি উপেক্ষা করবে বলে মনে হয় তাই" 1234 "বৈধ এবং তাই" 1234 "
public static bool IsBase64String(this string s)
{
s = s.Trim();
return (s.Length % 4 == 0) && Regex.IsMatch(s, @"^[a-zA-Z0-9\+/]*={0,3}$", RegexOptions.None);
}
যাঁরা পরীক্ষার বনাম ক্যাচিং এবং ব্যতিক্রমের পারফরম্যান্স সম্পর্কে ভাবছেন তাদের ক্ষেত্রে, এই বেসের 64 ক্ষেত্রে বেশিরভাগ ক্ষেত্রে ব্যতিক্রমটি ধরার চেয়ে আপনি যতক্ষণ না নির্দিষ্ট দৈর্ঘ্যে পৌঁছাবেন তত দ্রুত পরীক্ষা করা দ্রুত। দৈর্ঘ্য যত তাড়াতাড়ি তত ছোট
আমার অত্যন্ত অবৈজ্ঞানিক পরীক্ষায়: চরিত্রের দৈর্ঘ্য 100,000 - 110000 এর জন্য 10000 পুনরাবৃত্তির জন্য এটি প্রথম পরীক্ষা করা 2.7 গুণ বেশি দ্রুত ছিল।
অক্ষরের দৈর্ঘ্যের জন্য 1000 পুনরাবৃত্তির জন্য 1 - 16 টি মোট 16,000 পরীক্ষার জন্য অক্ষর এটি 10.9 গুণ বেশি দ্রুত ছিল।
আমি নিশ্চিত যে এমন একটি পয়েন্ট রয়েছে যেখানে ব্যতিক্রম ভিত্তিক পদ্ধতিতে পরীক্ষা করা আরও ভাল হয়ে যায়। আমি ঠিক জানি না কোন মুহূর্তে।
\n\fLE16
- আপনার পদ্ধতি এটির জন্য একটি মিথ্যা ইতিবাচক ফল দেবে। যে কারও জন্য পড়া এবং একটি নির্বোধ পদ্ধতি অনুসন্ধান; আমি FormatException সংক্রামক বা ব্যবহার করে একটি বৈশিষ্ট-উপযুক্ত Regex দেখুন সুপারিশ করবে stackoverflow.com/questions/475074/... ।
@"^[a-zA-Z0-9\+/]*={0,2}$"
=
সাইন ব্যবহার করে কিছু ক্ষেত্রে প্যাডিং প্রয়োজন । প্যাডিংটি ভুল হলে, ইনপুটটি একটি অভিব্যক্তির সাথে মিল থাকলেও এটি একটি ত্রুটি দেয়।