Ktoś wie o dobrym fragmencie kodu JavaScript do przekonwertowania HEX zakodowanych łańcuchów do base64 zakodowanych ciągów znaków?Konwerter HEX na Base64 dla JavaScript
15
A
Odpowiedz
13
if (!window.atob) {
var tableStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/";
var table = tableStr.split("");
window.atob = function (base64) {
if (/(=[^=]+|={3,})$/.test(base64)) throw new Error("String contains an invalid character");
base64 = base64.replace(/=/g, "");
var n = base64.length & 3;
if (n === 1) throw new Error("String contains an invalid character");
for (var i = 0, j = 0, len = base64.length/4, bin = []; i < len; ++i) {
var a = tableStr.indexOf(base64[j++] || "A"), b = tableStr.indexOf(base64[j++] || "A");
var c = tableStr.indexOf(base64[j++] || "A"), d = tableStr.indexOf(base64[j++] || "A");
if ((a | b | c | d) < 0) throw new Error("String contains an invalid character");
bin[bin.length] = ((a << 2) | (b >> 4)) & 255;
bin[bin.length] = ((b << 4) | (c >> 2)) & 255;
bin[bin.length] = ((c << 6) | d) & 255;
};
return String.fromCharCode.apply(null, bin).substr(0, bin.length + n - 4);
};
window.btoa = function (bin) {
for (var i = 0, j = 0, len = bin.length/3, base64 = []; i < len; ++i) {
var a = bin.charCodeAt(j++), b = bin.charCodeAt(j++), c = bin.charCodeAt(j++);
if ((a | b | c) > 255) throw new Error("String contains an invalid character");
base64[base64.length] = table[a >> 2] + table[((a << 4) & 63) | (b >> 4)] +
(isNaN(b) ? "=" : table[((b << 2) & 63) | (c >> 6)]) +
(isNaN(b + c) ? "=" : table[c & 63]);
}
return base64.join("");
};
}
function hexToBase64(str) {
return btoa(String.fromCharCode.apply(null,
str.replace(/\r|\n/g, "").replace(/([\da-fA-F]{2}) ?/g, "0x$1 ").replace(/ +$/, "").split(" "))
);
}
function base64ToHex(str) {
for (var i = 0, bin = atob(str.replace(/[ \r\n]+$/, "")), hex = []; i < bin.length; ++i) {
var tmp = bin.charCodeAt(i).toString(16);
if (tmp.length === 1) tmp = "0" + tmp;
hex[hex.length] = tmp;
}
return hex.join(" ");
}
+0
Drogi haker przy kodowaniu @coder, zobacz moje pytanie: http://stackoverflow.com/questions/34963963/converting-a-hex-string-ofa-a-reage-image -to-a-szesnastkowo-ciągi-bitmapy-obrazu-w-java –
31
Jeśli pracujesz w węźle lub używając Browserify, można użyć
var base64String = new Buffer(hexString, 'hex').toString('base64')
lub
var hexString = new Buffer(base64String, 'base64').toString('hex')
10
Doskonała komentarz @dandavis jest modyfikowany przez StackOverflow, i ma jedne dziwne ukryte postacie.
Tu jest jednym z wkładką:
btoa("a6b580481008e60df9350de170b7e728".match(/\w{2}/g).map(function(a){return String.fromCharCode(parseInt(a, 16));}).join(""))
, czyli
function hexToBase64(hexstring) {
return btoa(hexstring.match(/\w{2}/g).map(function(a) {
return String.fromCharCode(parseInt(a, 16));
}).join(""));
}
hexToBase64("a6b580481008e60df9350de170b7e728");
zwracają:
"prWASBAI5g35NQ3hcLfnKA=="
Powiązane problemy
- 1. Unescape javascript hex na ciąg
- 2. Konwerter DWG dla biblioteki Node.js lub Javascript
- 3. Char do Hex w javascript
- 4. Dekodowanie hex ciąg w javascript
- 5. Dekoduje Base64 na łańcuch szesnastkowy z javascript
- 6. Konwerter Flash na html5
- 7. Konwerter RTF na Wiki?
- 8. Konwerter Jade na HTML
- 9. Konwerter Jekyll dla R Markdown
- 10. Niestandardowy konwerter dla Retrofit 2
- 11. bash ascii na hex
- 12. Konwertuj hex na float
- 13. Jak kodować obraz base64 javascript
- 14. Kodowanie czcionek Base64 dla Tumblr na Firefox
- 15. Czy można napisać niestandardowy konwerter dla Pandoc?
- 16. Algorytm SHA1 base64 w javascript i C#
- 17. konwerter html na .doc w języku Python?
- 18. Parse HEX ASCII na liczby?
- 19. Jak przekonwertować podwójne na hex?
- 20. JavaScript przekonwertuj identyfikator GUID w formacie string na Base64
- 21. Konwertuj dane binarne na base64 za pomocą javascript
- 22. Konwersja NSData na base64
- 23. Czy ludzie lubią konwerter Flasha na C#?
- 24. JavaScript: zapisz ciąg base64 jako plik
- 25. Konwerter C# do Pythona
- 26. Wielozakresowy konwerter niestandardowy JOOQ
- 27. Konwerter Bool na widoczność w WPF
- 28. Pierwsze konwerter typu
- 29. Jak zarejestrować niestandardowy konwerter typów na wiosnę?
- 30. obsłudze konwerter na przedmioty związane w combobox
btoa ("4142434445464748494a4b4c4d4e4f505152535455565758595a" .match (/ \ w {2} /g).map(function(a){return String.fromCharCode (parseInt (a, 16));)) .join ("")) – dandavis
Istnieje ' '(non-join z zerową szerokością, po którym następuje przestrzeń o zerowej szerokości) w komentarzu @dandvis, który sprawia, że snipped fail z dość tajemniczym błędem" SyntaxError: nielegalny znak "w Firefoksie i" SyntaxError: nieoczekiwany token ILLEGAL " w Chrome. Oto poprawiony kod: 'btoa (" 4142434445464748494a4b4c4d4e4f505152535455565758595a ".match (/ \ w {2}/g) .map (function (a) {return String.fromCharCode (parseInt (a, 16));)) .join (" "))' – waldyrious
** AKTUALIZACJA: ** Próbowałem wkleić działającą wersję w moim poprzednim komentarzu, ale wygląda na to, że to StackOverflow, który dodaje niewidoczne znaki - co do diabła ?! Sądzę, że na razie jedynym rozwiązaniem jest spróbuj skopiować kod do edytora, który pokazuje takie niewidoczne znaki (spróbuj https://www.diffchecker.com/, jeśli nie masz pod ręką) i usuń winowajcę. Powinno wtedy działać. – waldyrious