Bagaimana Anda Boleh Menukar uint64 kepada int64 Tanpa Kehilangan Maklumat?

Susan Sarandon
Lepaskan: 2024-10-28 14:37:30
asal
393 orang telah melayarinya

How Can You Convert a uint64 to an int64 Without Losing Information?

Menukar uint64 kepada int64 tanpa Kehilangan Maklumat

Kod yang disediakan memang menukar nilai uint64 yang diberikan kepada int64, tetapi nilai yang terhasil (- 1) bukan perwakilan statistik yang dijangkakan. Ini kerana, walaupun mengekalkan nilai bit, jenis data int64 mentafsirnya dengan konvensyen tanda yang berbeza.

Untuk mengelakkan percanggahan ini, anda boleh menggunakan pendekatan penyahkod pengekod untuk mengekalkan corak bit asal. Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa penukaran daripada uint64 kepada int64 menggunakan:

int64 y = int64(x)
Salin selepas log masuk

tidak mengubah jujukan bit. Ia hanya menggunakan tafsiran tanda. Oleh itu, penukaran berikut:

var x uint64 = 18446744073709551615
var y int64 = int64(x)
Salin selepas log masuk

akan menghasilkan:

x = 0xFFFFFFFFFFFFFFFF
y = 0xFFFFFFFFFFFFFFFF (as a signed int64)
Salin selepas log masuk

Sebaliknya, pendekatan penyahkod-pengekod memastikan bahawa perwakilan bit dikekalkan secara utuh, tanpa mengira konvensyen tanda .

Sebagai contoh, jika anda mengubah suai nilai uint64 sedikit:

var x uint64 = 18446744073709551615 - 3
Salin selepas log masuk

Penukaran int64 yang terhasil:

var y int64 = int64(x)
Salin selepas log masuk

akan menghasilkan:

y = -4
Salin selepas log masuk

Ini menunjukkan bahawa perwakilan bit dipelihara dan ditafsirkan dengan tepat sebagai integer yang ditandatangani.

Atas ialah kandungan terperinci Bagaimana Anda Boleh Menukar uint64 kepada int64 Tanpa Kehilangan Maklumat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!