آموزش تبدیل Hex به Ascii و برعکس در جاوا
سلام دوستان در این سری از آموزش برنامه نویسی جاوا به آموزش تبدیل Hex به Ascii و برعکس در جاوا یعنی تبدیل هگز (Hex) به اسکی (Ascii) و همینطور عکس این عملی یعنی تبدیل اسکی (Ascii) هگز (Hex) در جاوا می پردازیم خوبی زبان جاوا داشتن متد های از پیش تعریف شده است که به سادگی می توان با استفاده از آنها اعمال مختلف را از جمله تبدیل Hex به Ascii و عکس این عمل را انجام دهید.
شاید جالب باشد بدانید می توان کمی فشرده سازی با استفاده از هگز انجام دهید ! مثلا هگز عدد 44357 برابر با AD45 اگر دفت کنید یک کاکتر کم شده است ولی باید توجه داشت برای فشرده سازی رشته آنچنان نمی توان روی آن حساب کرد چون رشته با عدد بسیار متفاوت است.
تبدیل اسکی به هگز (ASCII to Hex)
برای تبدیل سه کار انجام می شود که عبارتند از :
- تبدیل رشته به char array
- cast کردن هر char به int
- استفاده از Integer.toHexString برای تبدیل اسکی به هگز
private static String asciiToHex(String asciiStr) {
char[] chars = asciiStr.toCharArray();
StringBuilder hex = new StringBuilder();
for (char ch : chars) {
hex.append(Integer.toHexString((int) ch));
}
return hex.toString();
}
متد بالا بعد از دریافت ورودی رشته آن را همانطور که گفتیم تبدیل می کند.
تبدیل هگزبه اسکی (Hex to Ascii)
برای تبدیل سه کار انجام می شود که عبارتند از :
- گرفتن دوتا دوتایی رشته (به گونه ای هر دو کارکتر یک رشته خواهند شد)
- بردن دو کارکتر به مبنای 16
- append کردن تمامی رشته ها
private static String hexToAscii(String hexStr) {
StringBuilder output = new StringBuilder("");
for (int i = 0; i < hexStr.length(); i += 2) {
String str = hexStr.substring(i, i + 2);
output.append((char) Integer.parseInt(str, 16));
}
return output.toString();
}
متد بالا هم همانند متد قبلی یک رشته دریافت می کند و خروجی آن نیز همانند متد قبلی رشته است.
خب حالا شاید بهتر باشد آن را تست کنیم میدونم که نمی دونید در ورودی چی وارد کنید !
@Test
public static void whenHexToAscii() {
String asciiString = "orjinakteb.com";
String hexEquivalent =
"70726f6772616d6368692e6972";
assertEquals(asciiString, hexToAscii(hexEquivalent));
}
@Test
public static void whenAsciiToHex() {
String asciiString = "orjinakteb.com";
String hexEquivalent =
"70726f6772616d6368692e6972";
assertEquals(hexEquivalent, asciiToHex(asciiString));
}
این آموزش هم به پایان رسید.
موفق و پیروز باشید.
آموزش برنامه نویسی اندروید |