我想要实现的是确保我的属性始终为 0 或更大。类型并不重要。
可以说:
var x = 3;
var y = 5;
Run Code Online (Sandbox Code Playgroud)
x之后x -= y应该是 0。
目前正在使用这种方式,并且想知道是否有一种没有成员变量的方法:
public int Coins
{
get { return Math.Max(0, _coins); }
set { _coins = value; }
}
Run Code Online (Sandbox Code Playgroud)
也无法找到 uint 的方法。
所有建议均表示赞赏。
uint x = 3;
uint y = 5;
Run Code Online (Sandbox Code Playgroud)
预期 x 之后为 0 x -= y,但收到最大单位。
我正在开发一个函数,它在Flash AS3中获取舞台鼠标坐标,并在光标下方的十六进制网格中返回tile.我希望函数返回NaN或未定义如果光标不在tile上,如果是,则是对象数组中该tile的整数索引.
public function getCursorTile(mX:Number,mY:Number):uint
{
var tileIndex:uint = new uint(NaN);
trace(tileIndex);
for (i=0; i<tileArray.length; i++)
{
if (tileArray[i].hitTestPoint(mX,mY,true))
{
tileArray[i].tileBorder.gotoAndStop(1);
tileIndex = i;
}
}
return tileIndex;
}
Run Code Online (Sandbox Code Playgroud)
我一直在使用uint来处理大多数整数变量,也许这种数据类型不支持NaN或undefined?在定义tileIndex之后,此代码跟踪0.我正在使用hitTest,因为hexgrid不是正方形并且是随机生成的.Tile 0是第一个tile,当光标关闭时返回0,hex-map将导致问题.
我正在用C语言写一个二进制文件的结构.char*项和uint8项写得很好,但我似乎在编写uint32项时遇到问题.
我的写作代码在这里.
void writeOut(record *data){
FILE *fp = fopen("output.bin","w");
int i =0;
while(data[i].Name != NULL){
fwrite(data[i].Name, NAME_LEN ,1,fp);
fwrite(&data[i].Value1, sizeof(uint8_t) ,1,fp);
fwrite(&data[i].Value2, sizeof(uint8_t) ,1,fp);
fwrite(&data[i].Id, sizeof(uint32_t) ,1,fp);
fwrite(data[i].Text, TEXT_LEN ,1,fp);
i++;
}
}
Run Code Online (Sandbox Code Playgroud)
我的二进制文件对于记录1(十六进制)看起来像这样(用'|'用于显示字段结尾指向):
52 6F 64 27 72 6F 64 00 00 00 00 00 00 00 00 00 00 | 01 | 04 | 72 92 01 00 | 50 72 6F 6A 65 63 74 20 50 65 61 63 65 00 00 00 00 00 00 …
我的WIN32(C++)代码有一个UINT让我们调用它号码.此UINT(或INT无关紧要)的值以0开头,并被识别为八进制值.可以使用标准运算符,值将保持八进制.十六进制也是可能的(前面的0x).问题是我有利用价值数在缓冲区与它来计算不改变的值数.我可以在声明行上为缓冲区分配一个类似07777的值,但如果使用像buffer = number这样的操作,缓冲区中的值将在十进制基数上识别.
有人为我解决了吗?
我一直在寻找这个,但找不到有效或我理解的解决方案。
我在数据库“0x6c8c93”中有一个字符串,我想将其转换为 Uint,以便将其转换为颜色。
下面是我以前用来将 Uint 转换为颜色的函数。我刚刚将颜色图表中的十六进制值以这种格式 0x6c8c93 传递给它。但是现在我需要从数据库中提取一些值,所以我必须使用字符串。
class func UIColorFromHEX(hexValue: UInt) -> UIColor {
return UIColor(
red: CGFloat((hexValue & 0xFF0000) >> 16) / 255.0,
green: CGFloat((hexValue & 0x00FF00) >> 8) / 255.0,
blue: CGFloat(hexValue & 0x0000FF) / 255.0,
alpha: CGFloat(1.0)
)
}
Run Code Online (Sandbox Code Playgroud)
感谢帮助。
我正在尝试从 Uint8* 制作 Uint8 向量,但由于某些原因某些值不相同。这是我的代码。
std::vector<Uint8> wav_vector = {};
Uint8* wav_buffer_;
for (unsigned int i = 0; i < wav_length_; i++) {
wav_vector.push_back(wav_buffer_[i]);
}
Run Code Online (Sandbox Code Playgroud)
然后我尝试验证这些值:
for (unsigned int i = 0; i < wav_length_; i++){
if (wav_buffer_[i]!=wav_vector[i]){
cout<<i<<endl;
printf("Orignal Buffer %u\n", wav_buffer_[i]);
printf("Vector Buffer %u\n", wav_vector[i]);
}
}
Run Code Online (Sandbox Code Playgroud)
这些是我的示例输出:
Index: 0
Orignal Buffer 208
Vector Buffer 40
Index: 1
Orignal Buffer 72
Vector Buffer 3
Index: 2
Orignal Buffer 111
Vector Buffer 183
Index: 3
Orignal Buffer 1
Vector Buffer …Run Code Online (Sandbox Code Playgroud) 在 Go 之旅的第 13 步中,我对脚本做了一些更改
package main
import (
"fmt"
"math"
)
func main() {
var x, y int = 3, 4
var f float64 = math.Sqrt(float64(x*x + y*y))
var z uint = uint(f)
fmt.Println(x, y, z, f)
}
Run Code Online (Sandbox Code Playgroud)
返回:3 4 5 5,很好。
但是当我做这个改变时:否定f:
func main() {
var x, y int = 3, 4
var f float64 = - math.Sqrt(float64(x*x + y*y))
var z uint = uint(f)
fmt.Println(x, y, z, f)
}
Run Code Online (Sandbox Code Playgroud)
它响应:3 4 18446744073709551611 -5
为什么-5.0 …