Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何创建并递增2位或3位十六进制数?_Javascript_Actionscript 3_Adobe Indesign - Fatal编程技术网

Javascript 如何创建并递增2位或3位十六进制数?

Javascript 如何创建并递增2位或3位十六进制数?,javascript,actionscript-3,adobe-indesign,Javascript,Actionscript 3,Adobe Indesign,如何从十六进制数数组中增加最高的十六进制数?我对己烯雌酚的了解有点参差不齐,因此,如有任何帮助,将不胜感激。老实说,我不知道这些数字是否是十六进制的,因为前面有一个“u”,但是如果你去掉“u”,它们看起来是这样的。这些值来自InDesign代码段文档 例如: var anArray = ["uf9","ufc","u111","u112","u136","u137"]; // actual values var getUniqueID = getNextHigherNumber(anArray

如何从十六进制数数组中增加最高的十六进制数?我对己烯雌酚的了解有点参差不齐,因此,如有任何帮助,将不胜感激。老实说,我不知道这些数字是否是十六进制的,因为前面有一个“u”,但是如果你去掉“u”,它们看起来是这样的。这些值来自InDesign代码段文档

例如:

var anArray = ["uf9","ufc","u111","u112","u136","u137"]; // actual values

var getUniqueID = getNextHigherNumber(anArray);

function getNextHigherNumber(anArray) {
   // sort array
   // create variable and add one
   // return variable 
   return variable;
}
来自服务器的XML(查看Self和Source):


黑色
HyperlinkURLDestination/http%3a//test.com#1stMultilineLink/
黑色
HyperlinkURLDestination/http%3a//test.com
紫色
HyperlinkURLDestination/http%3a//google.com#MultileHyperlink
更多背景:

我有一个现有的XML文档,看起来它的ID使用了十六进制数字系统,我需要能够为新节点创建一个唯一的ID。ID值看起来类似于HTML web颜色,如“0xFF0000”(红色),但区别在于它使用2或3个字符,而不是6个字符,例如“ufc”或“u112”


我从服务器接收到一个XML文件,它有节点,每个节点都有一个ID和一个唯一的值(参见上面的XML示例)。如果我必须创建一个新的“项目”,我需要为它创建一个尚未使用的唯一ID

我认为你在思考十六进制时会把事情复杂化;)您只需将十六进制值转换为十进制值,然后继续执行您正在执行的操作,这样您就可以执行以下操作:

var anArray = ['u112', 'u136', 'uf9', 'u137', 'u111', 'ufc'];

var getUniqueID = getNextHigherNumber(anArray);

trace('u', getUniqueID);    // gives : u138

function getNextHigherNumber(anArray:Array):String {
    var max:int = 0;
    for(var i:int = 0; i<anArray.length; i++){
        // convert the hex value to an integer
        var num:int = int('0x' + String(anArray[i]).substr(1)); 
        // get the max value    
        if(num > max) max = num;
    }
    // return the hex value of (max value + 1)
    return (max + 1).toString(16);
}
var anArray=['u112','u136','uf9','u137','u111','ufc'];
var getUniqueID=getNextHigherNumber(anArray);
跟踪('u',getUniqueID);//地址:u138
函数getNextHigherNumber(数组:数组):字符串{
var max:int=0;
对于(变量i:int=0;i max)max=num;
}
//返回的十六进制值(最大值+1)
返回(最大值+1)。toString(16);
}

希望这能有所帮助。

我想你在考虑十六进制时会把事情弄复杂;)您只需将十六进制值转换为十进制值,然后继续执行您正在执行的操作,这样您就可以执行以下操作:

var anArray = ['u112', 'u136', 'uf9', 'u137', 'u111', 'ufc'];

var getUniqueID = getNextHigherNumber(anArray);

trace('u', getUniqueID);    // gives : u138

function getNextHigherNumber(anArray:Array):String {
    var max:int = 0;
    for(var i:int = 0; i<anArray.length; i++){
        // convert the hex value to an integer
        var num:int = int('0x' + String(anArray[i]).substr(1)); 
        // get the max value    
        if(num > max) max = num;
    }
    // return the hex value of (max value + 1)
    return (max + 1).toString(16);
}
var anArray=['u112','u136','uf9','u137','u111','ufc'];
var getUniqueID=getNextHigherNumber(anArray);
跟踪('u',getUniqueID);//地址:u138
函数getNextHigherNumber(数组:数组):字符串{
var max:int=0;
对于(变量i:int=0;i max)max=num;
}
//返回的十六进制值(最大值+1)
返回(最大值+1)。toString(16);
}

希望能有所帮助。

首先,十六进制只是一个数字的表示形式。 数字本身保持不变

加2意味着取这个数字的值,然后加上2的值。 十六进制只是记下数字的另一种方式

非常感谢您努力找出这些值是什么,但是为什么不检查文档以确定呢

您有一个通过InDesign接收的XML。 只要搜索它就会向我抛出“IDML”,这似乎是Adobe给您试图解析的格式起的名字

Adobe提供了描述此格式的文档:

第10.1.1节是关于自我属性的:

Self属性包含一个元素的唯一标识符 控制住它。此标识符在IDML包中的其他位置用于 引用元素,如“对象引用”中所述 本规范的“格式”部分。模式示例2。 Self属性Self{xsd:string}

如您所见,该值是字符串,而不是数字

在第31页,您可以找到Adobe如何为Self创建值的说明,包括以下语句:

Self属性值的唯一要求是 在IDML包中是唯一的。如果您自己编写IDML, 您不需要观察上述模式-您可以更改该值 你想要的任何东西的自我属性,只要它是独一无二的 (在IDML包中)并且只要对元素的所有引用 也将更改为匹配


首先,十六进制只是一个数字的表示。 数字本身保持不变

加2意味着取这个数字的值,然后加上2的值。 十六进制只是记下数字的另一种方式

非常感谢您努力找出这些值是什么,但是为什么不检查文档以确定呢

您有一个通过InDesign接收的XML。 只要搜索它就会向我抛出“IDML”,这似乎是Adobe给您试图解析的格式起的名字

Adobe提供了描述此格式的文档:

第10.1.1节是关于自我属性的:

Self属性包含一个元素的唯一标识符 控制住它。此标识符在IDML包中的其他位置用于 引用元素,如“对象引用”中所述 本规范的“格式”部分。模式示例2。 Self属性Self{xsd:string}

如您所见,该值是字符串,而不是数字

在第31页,您可以找到Adobe如何为Self创建值的说明,包括以下语句:

Self属性值的唯一要求是 在IDML包中是唯一的。如果您自己编写IDML, 您不需要观察上述模式-您可以更改该值 你想要的任何东西的自我属性,只要它是独一无二的 (在IDML包中)并且只要对元素的所有引用 也将更改为匹配


您标记了
JavaScript
ActionScript
(我不知道ActionScript),但您问题中的代码在我看来像JavaScript,这里的另一个答案看起来像是ActionScript;所以
var anArray = ["uf9","ufc","u111","u112","u136","u137"];

function getNextHigherNumber(theArray) {
    var maxNum = 0;
    theArray.forEach(function(num) {
        num = parseInt(num.substr(1), 16);
        if(num > maxNum) maxNum = num;
    });
    return 'u' + (maxNum + 1).toString(16);
}

// Run the function to see if it works
console.log(getNextHigherNumber(anArray));