Files
QRCodeLib/util/QRCodeUtility.cs
2019-05-04 06:53:50 +09:00

104 lines
3.1 KiB
C#

using System;
using System.Text;
namespace ThoughtWorks.QRCode.Codec.Util
{
/*
* This class must be modified as a adapter class for "edition dependent" methods
*/
public class QRCodeUtility
{
// Because CLDC1.0 does not support Math.sqrt(), we have to define it manually.
// faster sqrt (GuoQing Hu's FIX)
public static int sqrt(int val)
{
// using estimate method from http://www.azillionmonkeys.com/qed/sqroot.html
// Console.out.print(val + ", " + (int)Math.sqrt(val) + ", ");
int temp, g = 0, b = 0x8000, bshft = 15;
do
{
if (val >= (temp = (((g << 1) + b) << bshft--)))
{
g += b;
val -= temp;
}
}
while ((b >>= 1) > 0);
return g;
}
// for au by KDDI Profile Phase 3.0
// public static int[][] parseImage(Image image) {
// int width = image.getWidth();
// int height = image.getHeight();
// Image mutable = Image.createImage(width, height);
// Graphics g = mutable.getGraphics();
// g.drawImage(image, 0, 0, Graphics.TOP|Graphics.LEFT);
// ExtensionGraphics eg = (ExtensionGraphics) g;
// int[][] result = new int[width][height];
//
// for (int x = 0; x < width; x++) {
// for (int y = 0; y < height; y++) {
// result[x][y] = eg.getPixel(x, y);
// }
// }
// return result;
// }
//
// public static int[][] parseImage(byte[] imageData) {
// return parseImage(Image.createImage(imageData, 0, imageData.length));
// }
public static bool IsUniCode(String value)
{
byte[] ascii = AsciiStringToByteArray(value);
byte[] unicode = UnicodeStringToByteArray(value);
string value1 = FromASCIIByteArray(ascii);
string value2 = FromUnicodeByteArray(unicode);
if (value1 != value2)
return true;
return false;
}
public static bool IsUnicode(byte[] byteData)
{
string value1 = FromASCIIByteArray(byteData);
string value2 = FromUnicodeByteArray(byteData);
byte[] ascii = AsciiStringToByteArray(value1);
byte[] unicode = UnicodeStringToByteArray(value2);
if (ascii[0] != unicode[0])
return true;
return false;
}
public static String FromASCIIByteArray(byte[] characters)
{
ASCIIEncoding encoding = new ASCIIEncoding();
String constructedString = encoding.GetString(characters);
return constructedString;
}
public static String FromUnicodeByteArray(byte[] characters)
{
UnicodeEncoding encoding = new UnicodeEncoding();
String constructedString = encoding.GetString(characters);
return constructedString;
}
public static byte[] AsciiStringToByteArray(String str)
{
ASCIIEncoding encoding = new ASCIIEncoding();
return encoding.GetBytes(str);
}
public static byte[] UnicodeStringToByteArray(String str)
{
UnicodeEncoding encoding = new UnicodeEncoding();
return encoding.GetBytes(str);
}
}
}