PHP ဖွံ့ဖြိုးတိုးတက်မှုတွင် MySQL database များမှ Binary Data ကိုဖတ်ရန်လိုအပ်သည့်အခြေအနေများမကြာခဏကြုံတွေ့ရလေ့ရှိသည်။ အထူးသဖြင့် binary fields ( binary , binary , binary ) ကဲ့သို့သော binary fields) ကိုဒေတာဗေ့စ်တွင်သိမ်းဆည်းထားသည့်အခါဤအချက်အလက်များကိုဒ decimal မကိန်းတန်ဖိုးများအဖြစ်မည်သို့မှန်ကန်စွာပြောင်းလဲနိုင်မည်နည်း။ PHP သည် binary strings များကိုဒ decimal မကိန်းထဲသို့ပြောင်းလဲရန် Bindec function ကိုထောက်ပံ့ပေးသည်။
MySQL မှယူထားသော Bindec field data များကိုပြုလုပ်ရန် Bindec function ကိုမည်သို့မှန်ကန်စွာအသုံးပြုရမည်ကိုဤဆောင်းပါးတွင်အသေးစိတ်ရှင်းပြပါမည်။
ဒေတာဘေ့စ်တွင်ထိုကဲ့သို့သောကွင်းဆက်အဓိပ္ပါယ်ဖွင့်ဆိုချက်ရှိသည်ဆိုပါစို့။
CREATE TABLE example (
id INT PRIMARY KEY,
bin_data BINARY(4)
);
Binary Data ကိုသိမ်းထားပါ။
INSERT INTO example (id, bin_data) VALUES (1, 0b1011);
PDO သို့မဟုတ် MySQLI မှတစ်ဆင့် quering လုပ်သည့်အခါ bin_data field ကို string တစ်ခုအဖြစ်ပြန်လည်ရောက်ရှိမည်ဖြစ်သော်လည်းယခုအချိန်တွင် string သည် "1011" သို့မဟုတ် "11" စာသားကိုစာသားမဟုတ်ဘဲ Binary Content ဖြစ်သည်။
ဥပမာအားဖြင့်, ထုတ်ယူပြီးနောက်၎င်းသည် "\ x0B \ x00 \ x00 \ x00 \ x00" နှင့် Bindec ကို တိုက်ရိုက်ခေါ်ဆိုခြင်း၏ရလဒ်မှာကုန်ကြမ်း byte ဖြစ်နိုင်သည်။
Bindec function ၏အငြင်းပွားမှုများသည် "1011" ကဲ့သို့သောကြိုးများဖြစ်သည်။ အကယ်. ၎င်းကို binary byte stream ကိုတိုက်ရိုက်ပေးလျှင်၎င်းသည် byte တန်ဖိုးကိုခွဲခြမ်းစိတ်ဖြာခြင်းမပြုဘဲ၎င်းကိုဇာတ်ကောင်ဖြင့်အနက်ဖွင့်ဆိုလိမ့်မည်မဟုတ်,
PHP ၏ built-in function များကို အသုံးပြု. Byte မှ "0" နှင့် "1" strings များသို့ပြောင်းလဲရန်နှင့် "0 1" ကြိုးဖြင့်ပြောင်းလဲပစ်ပါ။ ထို့နောက်သူတို့ကို bindec နှင့်ခွဲခြမ်းစိတ်ဖြာပါ။
နမူနာကုဒ်:
<?php
// ထံမှယူဆ MySQL အဆိုပါ binary လယ်ပြင်ဖယ်ရှားခဲ့သည်
$binaryData = "\x0B"; // ဒက်မချက်11,သက်ဆိုင်ရာ binary1011
// byte စီးကို binary string ကိုပြောင်းပါ
function binaryToBitString(string $binary): string {
$bitString = '';
for ($i = 0; $i < strlen($binary); $i++) {
// ord() ဇာတ်ကောင်များရယူပါ ASCII လုံးပေါင်းပြဌါန်းသည့်ဉပဒေ,ကူးပြောင်း8bit binary string ကို
$bitString .= str_pad(decbin(ord($binary[$i])), 8, '0', STR_PAD_LEFT);
}
return $bitString;
}
$bitString = binaryToBitString($binaryData);
echo "Bit string: " . $bitString . "\n";
// အသုံးပြု bindec 转换为ဒက်မချက်数
$decimalValue = bindec($bitString);
echo "Decimal value: " . $decimalValue . "\n";
?>
ရလဒ်ရလဒ် -
Bit string: 00001011
Decimal value: 11
၎င်းသည် MySQL မှယူထားသော binary data များကို decimal နံပါတ်များသို့မှန်ကန်စွာပြောင်းလဲလိမ့်မည်။
အကယ်. လယ်ကွက်သည်စာလုံးအနည်းငယ်သာရှိပါက၎င်းကိုမေးမြန်းသောအခါ MySQL function ကို သုံး. decimal နံပါတ်သို့ပြောင်းလဲနိုင်သည်။
SELECT id, BIN(bin_data) AS bin_str FROM example;
သို့မဟုတ်ကိန်းတစ်ခုသို့တိုက်ရိုက်ပြောင်းပါ။
SELECT id, CONV(HEX(bin_data), 16, 10) AS decimal_value FROM example;
ဤနည်းအားဖြင့် PHP တွင်သင်တိုက်ရိုက်ရရှိသောအရာမှာဒွိုင်းမာကျန်ပုံစံများဖြစ်သော Binary byte streams များကိုရှောင်ရှားခြင်းအားဖြင့်ဗလာသို့မဟုတ်ဒ dec မလည်းဖြစ်သည်။
Bindec function ကို "0" နှင့် "1" တွင်ရေးထားသော binary strings များကိုသာကိုင်တွယ်နိုင်ပြီး binary byte streams များကိုမပံ့ပိုးနိုင်ပါ။
MySQL မှယူထားသော binary fields များသည်များသောအားဖြင့် byte streams များဖြစ်ပြီး Bindec အသုံးမပြုမီ binary strings များသို့ကူးပြောင်းရန်လိုအပ်သည်။
functions byte-byte ကူးပြောင်းခြင်းကိုသင်ကိုယ်တိုင်ဖြင့်ရေးနိုင်သည်။ သို့မဟုတ် SQL Query များအတွင်း function preprocessing ကိုသင်အသုံးပြုနိုင်သည်။
Binary Data ကိုအဓိပ္ပါယ်ကောက်ယူခြင်းကိုရှောင်ကြဉ်ရန်အမှန်တကယ်အခြေအနေအရသင့်တော်သောလုပ်ဆောင်မှုအစီအစဉ်ကိုရွေးချယ်ပါ။