使用Javascript获取字节的值

时间:2013-03-30 10:42:00

标签: javascript string byte

我不确定标题是否有意义,但这就是我需要的。

这是我的字节: 0F*E ù 我已经设法用这个php片段获取这个字节的值:

<?php
$var = "���������ˇ�����0F*E��ù�";

for($i = 0; $i < strlen($var); $i++)
{
   echo ord($var[$i])."<br/>";
}
?>

结果是: 0 0 0 0 0 0 0 0 2 2 0 255 0 0 0 0 0 2 48 70 1 42 69 0 0 1 157 0

但是现在我需要在没有php的情况下做同样的事情,但是在Java Script中。 任何帮助将不胜感激

2 个答案:

答案 0 :(得分:2)

如果您想在JavaScript中获取字符串中每个字符的数值,可以这样做:

var someString = "blarg";

for(var i=0;i<someString.length;i++) {
    var char = someString.charCodeAt(i);

}

String.charCodeAt(index)返回字符串中指定字符的Unicode代码点值。它不像PHP或C那样返回固定的8位编码(即ASCII)的数值。假设你的字符串是一个人类可读的字符串(而不是原始的二进制数据),那么使用charCodeAt就完全没问了。如果您正在处理原始二进制数据,请不要使用JavaScript字符串。

如果您的字符串包含Unicode代码点低于128的字符,则charCodeAt与PHP或C ord类型中的char行为相同,但您提供的示例包含非ASCII字符,因此Unicode(有时是复杂的)规则将发挥作用。

请参阅charCodeAt此处的文档:https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/charCodeAt

答案 1 :(得分:0)

PHP字符串计算为8位(字节0..255),而JavaScript使用16位unicode字符(0..65535)。根据您的字符串,您可以将其拆分为(16位)字符代码或字节。如果您知道您的String只包含8位字符,您可以忽略“hiByte”(见下文)以获得与PHP相同的结果。

function toByteVersionA(s) {
    var len = s.length;
    // char codes
    var charCodes = new Array();
    for(var i=0; i<len; i++) {
        charCodes.push(s.charCodeAt(i).toString());
    }
    var charCodesString = charCodes.join(" ");
    return charCodesString;
}

function toByteVersionB(s) {
    var len = s.length;
    var bytes = new Array();
    for(var i=0; i<len; i++) {
        var charCode = s.charCodeAt(i);
        var loByte = charCode & 255;
        var hiByte = charCode >> 8;
        bytes.push(loByte.toString());
        bytes.push(hiByte.toString());
    }
   var bytesString = bytes.join(" ");
   return bytesString;
}

function toByteVersionC(s) {
   var len = s.length;
   var bytes = new Array();
   for(var i=0; i<len; i++) {
        var charCode = s.charCodeAt(i);
        var loByte = charCode & 255;
        bytes.push(loByte.toString());
   }
   var bytesString = bytes.join(" ");
   return bytesString;
}

var myString = "abc"; // whatever your String is
var myBytes = toByteVersionA(myString); // whatever version you want