Hướng dẫn raw to hex python - nguyên sang hex python

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

    49 -> I
    54 -> T 
    64 -> d
    00 -> \x00  
    00 -> \x00
    
    6 thành int.

  • Chuyển đổi một hình lục giác

    49 -> I
    54 -> T 
    64 -> d
    00 -> \x00  
    00 -> \x00
    
    6 thành một chiếc phao.

  • Chuyển đổi một mảng byte thành một thập lục phân

    49 -> I
    54 -> T 
    64 -> d
    00 -> \x00  
    00 -> \x00
    
    6.

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ố 8

Ví 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
0

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 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
1

Xem 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

Bài Viết Liên Quan

Chủ Đề