我不确定标题是否有意义,但这就是我需要的。
这是我的字节: 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中。 任何帮助将不胜感激
答案 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