Saya memiliki sel yang berisi nilai ini:
0x00006cd2c0306953
dan saya ingin mengubahnya menjadi angka.
Saya mencoba:
=HEX2DEC(C8)
di mana C8
sel berisi nilai hex saya.
Saya mendapatkan kesalahan #NUM.
Apa yang saya lakukan salah?
microsoft-excel
conversion
hexadecimal
Nathan Fellman
sumber
sumber
Jawaban:
Anda cukup menggunakan:
len(A1)
memberi Anda panjang0x
string. Tidak termasuk panjang0x
, string yang tersisa adalah nomor hex. Gunakan fungsi Excel untuk mendapatkan keputusan.sumber
HEX2DEC
menerima maksimal sepuluh digit hex. String dalam pertanyaan0x00006cd2c0306953
,, adalah 18 karakter. Solusi Anda mengevaluasiRIGHT(A1,(LEN(A1)-2))
; 18−2 adalah 16, jadiRIGHT(…)
kembali00006cd2c0306953
, yang panjangnya 16 digit. Bahkan jika Anda melepaskan nol di depan, Anda memiliki 12 digit, yang masih terlalu banyak. Jika Anda bisa membuatnya berfungsi, jelaskan konfigurasi Anda. (Yaitu, versi Excel apa yang Anda gunakan? Dan apakah Anda melakukan sesuatu yang sulit untuk membuatnya berfungsi?)Seperti yang ditunjukkan oleh TwiterZX,
Hex2Dec
input dibatasi hingga 10 karakter dan6cd2c0306953
12 karakter. Jadi itu tidak akan berhasil, tetapi mari kita gulir fungsi kita sendiri untuk itu. Menggunakan VBA, tambahkan Modul dan gunakan kode berikut (mungkin perlu disesuaikan berdasarkan kebutuhan Anda)Di Excel, katakanlah sel A1 berisi
0x00006cd2c0306953
, rumus A2=HexadecimalToDecimal(A1)
akan menghasilkan1.19652E+14
. Format kolom ke angka dengan nol desimal dan hasilnya akan119652423330131
.sumber
HEX2DEC terbatas hingga 10 karakter, tetapi itu tidak berarti kita tidak dapat menggunakannya. Cukup gunakan beberapa kali, untuk mengonversi 10 karakter sekaligus dan menerapkan daya 2 yang sesuai untuk setiap penggunaan.
[Penafian: Belum teruji saat ini]
Kemudian: Saya sekarang di spreadsheet, siap untuk diuji. Ubah 3,5 di MID menjadi 3,6. Hmm .. Masih tidak benar.
Ternyata HEX2DEC bekerja pada nilai hex yang ditandatangani, jadi istilah pertama berakhir menjadi negatif. Tidak yakin mengapa, tetapi di sini adalah versi tetap yang menambahkan 2 ^ 40 (atau 16 ^ 10, karena kami sedang mengerjakan hex) untuk memperbaikinya:
Namun, itu hanya berfungsi jika HAK (C8, 10) kebetulan negatif. Inilah solusi umum saya:
Ugh.
sumber
Salah satu cara kotor untuk melakukan konversi ini, tanpa menggunakan fungsi (lihat utas forum excel ini untuk itu) adalah dengan menggunakan rumus ini untuk menghitung nilai setiap karakter dalam string, lalu jumlahkan semuanya. Ini jelas melibatkan penggunaan sel sementara untuk menguraikan angka:
Dengan asumsi Anda menempatkan sel temp ini pada baris 1 hingga 16, ini berfungsi dengan mengekstraksi setiap karakter, mulai dari kanan, mengubahnya menjadi nilai, lalu menerapkan kekuatan yang relevan dari 16. Jumlahkan semua 16 sel untuk mendapatkan nilai Anda.
sumber
16^(ROW() - 1)
jauh lebih bersih dan lebih mudah dibaca daripadaPOWER()
Coba yang berikut ini:
sumber
2^32
?Pastikan kolom Anda yang memiliki nomor HEX tidak memiliki 0x. Nomor HEX harus C8, bukan 0xC8. Semoga ini bisa membantu.
sumber
HEX2DEC gagal jika ada karakter non-hex (ABCDEF0123456789) terkemuka atau tertinggal. Spasi adalah ranjau darat yang nyata karena tidak terlihat. Seringkali angka hex, direpresentasikan sebagai string, dalam file log berisi spasi terdepan dan / atau trailing. Saya menemukan bahwa "= HEX2DEC (TRIM (A1)) biasanya akan memperbaiki masalah ini. Namun, sesuatu seperti" = HEX2DEC (KANAN (TRIM (A1), 10), mungkin diperlukan karena batasan 10 karakter HEX2DEC.
sumber
Fungsi ini telah berubah coba gunakan
jadi tanpa nomor 2 antara HEX & DEC
sumber
,
atau di;
sini