Tôi có một số chuỗi thô mà tôi đang chuyển đổi thành hex
>>> word_str = "4954640000005200000005a7a90fb36ecd3fa2ca7ec48ca36004acef63f77157ab2f53e3f768ecd9e18547b8c22e21d01bfb6b3de325a27b8fb3acef63f77157ab2f53e3f768ecd9e185b7330fb7c95782fc3d67e7c3a66728dad8b59848c7670c94b29b54d2379e2e7a"
>>> hex_str = word_str.decode['hex']
>>> hex_str = "ITd\x00\x00\x00R\x00\x00\x00\x05\xa7\xa9\x0f\xb3n\xcd?\xa2\xca~\xc4\x8c\xa3`\x04\xac\xefc\xf7qW\xab/S\xe3\xf7h\xec\xd9\xe1\x85G\xb8\xc2.!\xd0\x1b\xfbk=\xe3%\xa2{\x8f\xb3\xac\xefc\xf7qW\xab/S\xe3\xf7h\xec\xd9\xe1\x85\xb73\x0f\xb7\xc9W\x82\xfc=g\xe7\xc3\xa6g[\xda\xd8\xb5\x98H\xc7g\x0c\x94\xb2\x9bT\xd27\x9e.z"
Bằng cách nhìn vào bảng ASCII, tôi cho rằng phải mất hai số một lần và chuyển đổi chúng bằng giá trị thích hợp từ bảng ASCII như
49 -> I
54 -> T
64 -> d
00 -> \x00
00 -> \x00
Nhưng tại một số điểm, quy tắc này phá vỡ
52 -> \x00R [00 and 52]
Sau đó là tiền thu được để lấy hai con số cùng một lúc và
00 -> \x00
00 -> \x00
00 -> \x00
05 -> \x05
a7 -> \xa7
a9 -> \xa9
0f -> \x0f
Ở đây, phải mất 2 cặp [
49 -> I
54 -> T
64 -> d
00 -> \x00
00 -> \x00
2 và 49 -> I
54 -> T
64 -> d
00 -> \x00
00 -> \x00
3] cùng một lúc thay vì của một, trong đó nó không chuyển đổi 49 -> I
54 -> T
64 -> d
00 -> \x00
00 -> \x00
2 với giá trị phù hợp [từ bảng ASCII mở rộng]b36e -> \xb3n
Ở đây CD trở thành ________ 15 ...
cd -> \xcd?
Mục tiêu của tôi là thực hiện cùng một [biến.decode ['hex']] trong C ++, nhưng tôi cần hiểu những gì đang xảy ra, thuật toán nào ở đây đã được sử dụng?
Bỏ qua nội dung chính
Trình duyệt này không còn được hỗ trợ.
Nâng cấp lên Microsoft Edge để tận dụng các tính năng mới nhất, cập nhật bảo mật và hỗ trợ kỹ thuật.
Cách chuyển đổi giữa các chuỗi thập lục phân và các loại số [Hướng dẫn lập trình C#]
- Bài báo
- 10/12/2021
- 3 phút để đọc
Trong bài viết này
Những ví dụ này chỉ cho bạn cách thực hiện các nhiệm vụ sau:
Có được giá trị thập lục phân của mỗi ký tự trong một chuỗi.
Có được char tương ứng với mỗi giá trị trong một chuỗi thập lục phân.
Chuyển đổi một thập lục phân
6 thành int.49 -> I 54 -> T 64 -> d 00 -> \x00 00 -> \x00
Chuyển đổi một hình lục giác
6 thành một chiếc phao.49 -> I 54 -> T 64 -> d 00 -> \x00 00 -> \x00
Chuyển đổi một mảng byte thành một thập lục phân
6.49 -> I 54 -> T 64 -> d 00 -> \x00 00 -> \x00
Ví dụ
Ví dụ này đưa ra giá trị thập lục phân của mỗi ký tự trong
49 -> I
54 -> T
64 -> d
00 -> \x00
00 -> \x00
6. Đầu tiên, nó phân tích 49 -> I
54 -> T
64 -> d
00 -> \x00
00 -> \x00
6 vào một mảng các ký tự. Sau đó, nó gọi toint32 [char] trên mỗi ký tự để có được giá trị số của nó. Cuối cùng, nó định dạng số là đại diện thập lục phân của nó trong một 49 -> I
54 -> T
64 -> d
00 -> \x00
00 -> \x00
6.string input = "Hello World!";
char[] values = input.ToCharArray[];
foreach [char letter in values]
{
// Get the integral value of the character.
int value = Convert.ToInt32[letter];
// Convert the integer value to a hexadecimal value in string form.
Console.WriteLine[$"Hexadecimal value of {letter} is {value:X}"];
}
/* Output:
Hexadecimal value of H is 48
Hexadecimal value of e is 65
Hexadecimal value of l is 6C
Hexadecimal value of l is 6C
Hexadecimal value of o is 6F
Hexadecimal value of is 20
Hexadecimal value of W is 57
Hexadecimal value of o is 6F
Hexadecimal value of r is 72
Hexadecimal value of l is 6C
Hexadecimal value of d is 64
Hexadecimal value of ! is 21
*/
Ví dụ này phân tích một
49 -> I
54 -> T
64 -> d
00 -> \x00
00 -> \x00
6 của các giá trị thập lục phân và đầu ra ký tự tương ứng với mỗi giá trị thập lục phân. Đầu tiên, nó gọi phương thức chia [char []] để thu được từng giá trị thập lục phân dưới dạng riêng lẻ 49 -> I
54 -> T
64 -> d
00 -> \x00
00 -> \x00
6 trong một mảng. Sau đó, nó gọi toint32 [chuỗi, int32] để chuyển đổi giá trị thập lục phân thành giá trị thập phân được biểu thị dưới dạng int. Nó hiển thị hai cách khác nhau để có được ký tự tương ứng với mã ký tự đó. Kỹ thuật đầu tiên sử dụng ConvertFromutF32 [int32], trả về ký tự tương ứng với đối số số nguyên là 49 -> I
54 -> T
64 -> d
00 -> \x00
00 -> \x00
6. Kỹ thuật thứ hai rõ ràng chọn 52 -> \x00R [00 and 52]
5 vào char.string hexValues = "48 65 6C 6C 6F 20 57 6F 72 6C 64 21";
string[] hexValuesSplit = hexValues.Split[' '];
foreach [string hex in hexValuesSplit]
{
// Convert the number expressed in base-16 to an integer.
int value = Convert.ToInt32[hex, 16];
// Get the character corresponding to the integral value.
string stringValue = Char.ConvertFromUtf32[value];
char charValue = [char]value;
Console.WriteLine["hexadecimal value = {0}, int value = {1}, char value = {2} or {3}",
hex, value, stringValue, charValue];
}
/* Output:
hexadecimal value = 48, int value = 72, char value = H or H
hexadecimal value = 65, int value = 101, char value = e or e
hexadecimal value = 6C, int value = 108, char value = l or l
hexadecimal value = 6C, int value = 108, char value = l or l
hexadecimal value = 6F, int value = 111, char value = o or o
hexadecimal value = 20, int value = 32, char value = or
hexadecimal value = 57, int value = 87, char value = W or W
hexadecimal value = 6F, int value = 111, char value = o or o
hexadecimal value = 72, int value = 114, char value = r or r
hexadecimal value = 6C, int value = 108, char value = l or l
hexadecimal value = 64, int value = 100, char value = d or d
hexadecimal value = 21, int value = 33, char value = ! or !
*/
Ví dụ này cho thấy một cách khác để chuyển đổi một thập lục phân
49 -> I
54 -> T
64 -> d
00 -> \x00
00 -> \x00
6 thành một số nguyên, bằng cách gọi phương thức parse [chuỗi, số lượng].________số 8Ví dụ sau đây cho thấy cách chuyển đổi phần thập phân
49 -> I
54 -> T
64 -> d
00 -> \x00
00 -> \x00
6 thành một chiếc phao bằng cách sử dụng lớp System.bitConverter và phương thức UINT32.parse.
string hexString = "43480170";
uint num = uint.Parse[hexString, System.Globalization.NumberStyles.AllowHexSpecifier];
byte[] floatVals = BitConverter.GetBytes[num];
float f = BitConverter.ToSingle[floatVals, 0];
Console.WriteLine["float convert = {0}", f];
// Output: 200.0056
Ví dụ sau đây cho thấy cách chuyển đổi mảng byte thành chuỗi thập lục phân bằng cách sử dụng lớp System.bitConverter.
49 -> I
54 -> T
64 -> d
00 -> \x00
00 -> \x00
0Ví dụ sau đây cho thấy cách chuyển đổi mảng byte thành chuỗi thập lục phân bằng cách gọi phương thức Convert.ToHexString được giới thiệu trong .NET 5.0.
49 -> I
54 -> T
64 -> d
00 -> \x00
00 -> \x00
1Xem thêm
- Chuỗi định dạng số tiêu chuẩn
- Loại
- Cách xác định xem một chuỗi có đại diện cho một giá trị số
Nhận xét
Gửi và xem phản hồi cho