從「世界,你好」的字節是:GSM 7位編碼,1個比特填充
如果應用填充它會成爲:D0 65 36 FB 0D BA BF E5 6C 32
(從維基複製)
我可以知道用1位填充編碼的公式是什麼?
這裏是轉換字符串的公式PDU,我編輯:(感謝源提供商) *整個完整的公式是有點長,所以我只是張貼在這裏的一部分...
maxkeys = 160;
function binToInt(x)//sp
{
var total = 0;
var power = parseInt(x.length)-0;
for(var i=0;i<x.length;i++)
{
if(x.charAt(i) == '1')
{
total = total +Math.pow(2,power);
}
power --;
}
return total;
}
function intToHex(i) //sp
{
var sHex = "ABCDEF";
h = "";
i = parseInt(i);
for(j = 0; j <= 3; j++)
{
h += sHex.charAt((i >> (j * 8 + 4)) & 0x0F) +
sHex.charAt((i >> (j * 8)) & 0x0F);
}
return h.substring(0,2);
}
function stringToPDU(inpString,size)
{
var bitSize = size[0].value * size[0].checked | size[1].value * size[1].checked | size[2].value * size[2].checked;
var octetFirst = "";
var octetSecond = "";
var output = "";
var DATA_ENCODING = "00";
var VALID_PERIOD = "AA";
var userDataSize;
if (bitSize == 7)
{
userDataSize = intToHex(inpString.length);
for(var i=0;i<=inpString.length;i++)
{
if(i==inpString.length)
{
if (octetSecond != "") // AJA Fix overshoot
{
output = output + "" + (intToHex(binToInt(octetSecond)));
}
break;
}
var current = intToBin(getSevenBit(inpString.charAt(i)),7);
var currentOctet;
if(i!=0 && i%8!=0)
{
octetFirst = current.substring(7-(i)%8);
currentOctet = octetFirst + octetSecond;
output = output + "" + (intToHex(binToInt(currentOctet)));
octetSecond = current.substring(0,7-(i)%8);
}
else
{
octetSecond = current.substring(0,7-(i)%8);
}
}
}
//var data = DATA_ENCODING + VALID_PERIOD + userDataSize;
var PDU = output;
return PDU;
}
<input onclick="pduOut.value= stringToPDU(document.stringToPduForm.smsText.value.substring (0, maxkeys),document.stringToPduForm.size);" type="button" size="11" value=" Convert " name="stringButton">
我需要知道需要哪些更改,以便該公式可以使用1位填充對消息進行編碼..但我不是很瞭解這個概念,有人可以教我嗎? 謝謝。
哦,我明白了。非常感謝Ilmari,我現在明白了。再次感謝。 –