Hướng dẫn hex to string javascript - hex sang chuỗi javascript

Tôi muốn chuyển đổi biến

const data = "64 67 66 61 60 63 62 6D 6C 6F 6E 69 68 6B 6A 75 74 77 76 71 70 73 72 7D 7C 7F";

console.log(data.split(" ").map(n => String.fromCharCode(parseInt(n, 16) ^ 5)).join(""));
3 thành số thập phân bằng hàm
const data = "64 67 66 61 60 63 62 6D 6C 6F 6E 69 68 6B 6A 75 74 77 76 71 70 73 72 7D 7C 7F";

console.log(data.split(" ").map(n => String.fromCharCode(parseInt(n, 16) ^ 5)).join(""));
4 và lưu trữ nó trong một biến,
const data = "64 67 66 61 60 63 62 6D 6C 6F 6E 69 68 6B 6A 75 74 77 76 71 70 73 72 7D 7C 7F";

console.log(data.split(" ").map(n => String.fromCharCode(parseInt(n, 16) ^ 5)).join(""));
5.

var whiteHex = 'ffffff';

var whiteDecimal = parseInt(whiteHex);

Tôi không chắc trên đó có đúng hay không. Lý do là, sau đó tôi muốn trừ 1 từ

const data = "64 67 66 61 60 63 62 6D 6C 6F 6E 69 68 6B 6A 75 74 77 76 71 70 73 72 7D 7C 7F";

console.log(data.split(" ").map(n => String.fromCharCode(parseInt(n, 16) ^ 5)).join(""));
5 và lưu trữ nó trong một biến
const data = "64 67 66 61 60 63 62 6D 6C 6F 6E 69 68 6B 6A 75 74 77 76 71 70 73 72 7D 7C 7F";

console.log(data.split(" ").map(n => String.fromCharCode(parseInt(n, 16) ^ 5)).join(""));
7. Đây là nơi tôi đang bị mắc kẹt. Làm thế nào tôi có thể trừ một cái từ giá trị hex
const data = "64 67 66 61 60 63 62 6D 6C 6F 6E 69 68 6B 6A 75 74 77 76 71 70 73 72 7D 7C 7F";

console.log(data.split(" ").map(n => String.fromCharCode(parseInt(n, 16) ^ 5)).join(""));
8? Tôi có thiếu thứ gì đó trong hàm
const data = "64 67 66 61 60 63 62 6D 6C 6F 6E 69 68 6B 6A 75 74 77 76 71 70 73 72 7D 7C 7F";

console.log(data.split(" ").map(n => String.fromCharCode(parseInt(n, 16) ^ 5)).join(""));
9 không?

Hướng dẫn hex to string javascript - hex sang chuỗi javascript

Thanehphan

1.2553 huy hiệu vàng13 Huy hiệu bạc24 Huy hiệu đồng3 gold badges13 silver badges24 bronze badges

Hỏi ngày 11 tháng 8 năm 2019 lúc 15:41Aug 11, 2019 at 15:41

1

Nó dường như được ____ 20'ed với số

0x64 = 01100100
0x61 = 01100001
1

const data = "64 67 66 61 60 63 62 6D 6C 6F 6E 69 68 6B 6A 75 74 77 76 71 70 73 72 7D 7C 7F";

console.log(data.split(" ").map(n => String.fromCharCode(parseInt(n, 16) ^ 5)).join(""));

Biết kết quả dự kiến, chúng ta có thể so sánh số hiện có với dự kiến ​​sẽ thấy sự khác biệt và tìm một mẫu.

Hãy so sánh số đầu tiên

0x64 = 01100100
0x61 = 01100001
2 với chữ cái
0x64 = 01100100
0x61 = 01100001
3 (61) trong nhị phân:

0x64 = 01100100
0x61 = 01100001

Bây giờ số thứ hai

0x64 = 01100100
0x61 = 01100001
4 có chữ
0x64 = 01100100
0x61 = 01100001
5 (62):

0x67 = 01100111
0x62 = 01100010

và số thứ ba

0x64 = 01100100
0x61 = 01100001
6 với chữ cái
0x64 = 01100100
0x61 = 01100001
7 (63):

0x66 = 01100110
0x63 = 01100011

Nếu bạn nhìn kỹ, bạn có thể thấy rằng có một mẫu, bit 0 và 2 (số bit từ bên phải) không khớp. Vì vậy, nếu chúng ta chuyển đổi nhị phân

0x64 = 01100100
0x61 = 01100001
8 thành thập phân, chúng ta sẽ nhận được số
0x64 = 01100100
0x61 = 01100001
1

const data = "64 67 66 61 60 63 62 6D 6C 6F 6E 69 68 6B 6A 75 74 77 76 71 70 73 72 7D 7C 7F";

data.split(" ").forEach((n,i) =>
{
  const number = parseInt(n, 16),
        numberExpected = "a".charCodeAt(0) + i,
        char = String.fromCharCode(number),
        charExpected = String.fromCharCode(numberExpected),
        xor = number ^ numberExpected,
        result = number ^ xor,
        charResult = String.fromCharCode(result);

  console.log(`${char} (${n}) | expected: ${charExpected} (${numberExpected.toString(16)}) | XOR difference: ${xor} | result: ${charResult}`);
});
.as-console-wrapper{top:0;max-height:unset!important;overflow:auto!important;}

Một Giải Pháp Cập NHật Hơn, Để MÃ HÓA:

// This is the same for all of the below, and
// you probably won't need it except for debugging
// in most cases.
function bytesToHex(bytes) {
  return Array.from(
    bytes,
    byte => byte.toString(16).padStart(2, "0")
  ).join("");
}

// You almost certainly want UTF-8, which is
// now natively supported:
function stringToUTF8Bytes(string) {
  return new TextEncoder().encode(string);
}

// But you might want UTF-16 for some reason.
// .charCodeAt(index) will return the underlying
// UTF-16 code-units (not code-points!), so you
// just need to format them in whichever endian order you want.
function stringToUTF16Bytes(string, littleEndian) {
  const bytes = new Uint8Array(string.length * 2);
  // Using DataView is the only way to get a specific
  // endianness.
  const view = new DataView(bytes.buffer);
  for (let i = 0; i != string.length; i++) {
    view.setUint16(i, string.charCodeAt(i), littleEndian);
  }
  return bytes;
}

// And you might want UTF-32 in even weirder cases.
// Fortunately, iterating a string gives the code
// points, which are identical to the UTF-32 encoding,
// though you still have the endianess issue.
function stringToUTF32Bytes(string, littleEndian) {
  const codepoints = Array.from(string, c => c.codePointAt(0));
  const bytes = new Uint8Array(codepoints.length * 4);
  // Using DataView is the only way to get a specific
  // endianness.
  const view = new DataView(bytes.buffer);
  for (let i = 0; i != codepoints.length; i++) {
    view.setUint32(i, codepoints[i], littleEndian);
  }
  return bytes;
}

Ví dụ:

bytesToHex(stringToUTF8Bytes("hello 漢字 👍"))
// "68656c6c6f20e6bca2e5ad9720f09f918d"
bytesToHex(stringToUTF16Bytes("hello 漢字 👍", false))
// "00680065006c006c006f00206f225b570020d83ddc4d"
bytesToHex(stringToUTF16Bytes("hello 漢字 👍", true))
// "680065006c006c006f002000226f575b20003dd84ddc"
bytesToHex(stringToUTF32Bytes("hello 漢字 👍", false))
// "00000068000000650000006c0000006c0000006f0000002000006f2200005b57000000200001f44d"
bytesToHex(stringToUTF32Bytes("hello 漢字 👍", true))
// "68000000650000006c0000006c0000006f00000020000000226f0000575b0000200000004df40100"

Để Giải MÃ

function hexToBytes(hex) {
    const bytes = new Uint8Array(hex.length / 2);
    for (let i = 0; i !== bytes.length; i++) {
        bytes[i] = parseInt(hex.substr(i * 2, 2), 16);
    }
    return bytes;
}

Sau đó

const data = "64 67 66 61 60 63 62 6D 6C 6F 6E 69 68 6B 6A 75 74 77 76 71 70 73 72 7D 7C 7F";

console.log(data.split(" ").map(n => String.fromCharCode(parseInt(n, 16) ^ 5)).join(""));
0

Đây Là Danh Sách Các Tênn MÃ HÓA ĐượC Phép

Bạn Có Thể NHậN thấy Utf-32 Không nhập Trong Danh Sách Đó, Đói Là Một

const data = "64 67 66 61 60 63 62 6D 6C 6F 6E 69 68 6B 6A 75 74 77 76 71 70 73 72 7D 7C 7F";

console.log(data.split(" ").map(n => String.fromCharCode(parseInt(n, 16) ^ 5)).join(""));
1

Sau đó:

const data = "64 67 66 61 60 63 62 6D 6C 6F 6E 69 68 6B 6A 75 74 77 76 71 70 73 72 7D 7C 7F";

console.log(data.split(" ").map(n => String.fromCharCode(parseInt(n, 16) ^ 5)).join(""));
2

10 hữu ích 0 bình luận chia sẻ 0 bình luận chia sẻ